我正在尝试将c#中的以下代码转换为java。我在转换它时遇到了困难。请有人建议我用Java做一个简单的方法。
DateTime StartDate = new DateTime(PWUpdatedOn.Year, 01, 01);
TimeSpan ts = new TimeSpan(PWUpdatedOn.Ticks - StartDate.Ticks);
//Response.Write(ts.Days+1);
days = ts.Days + 1;
lngN = 0;
PWUpdatedOn.Year = 2016 // current year
答案 0 :(得分:2)
正如Jigar Joshi在其他Question中回答的那样。
来自JodaTime的Interval会做..
时间间隔表示两个时刻之间的一段时间。间隔>包括开始即时和排除结束。结束时刻总是大于或等于开始时刻。 间隔具有固定的毫秒持续时间。这是开始和结束时刻之间的差异。 持续时间由ReadableDuration单独表示。因此,间隔不具有可比性。要比较两个区间的长度,您应该比较它们的持续时间。
也可以将间隔转换为ReadablePeriod。这表示起点和终点之间的差异,如年和日等字段。
Interval是线程安全且不可变的。
答案 1 :(得分:1)
我不确定Ticks中的Ticks是什么。但它会是这样的:
LocalDateTime startDate = LocalDateTime.of(PWUpdatedOn.getYear(), 1, 1);
Period ts = Period.between(PWUpdatedOn, startDate.toLocalDate());
days = ts.getDays() + 1;
请注意,Period.between()需要两个LocalDate实例。如果PWUpdateOn是LocalDateTime实例,则需要使用方法toLocalDate()进行转换。
一些可能相关的评论:对于分区日期时间,使用ZonedDateTime而不是LocalDateTimel;所有时间和句点对象在Java中都是不可变的。