返回ISO-8601时间格式(从Java中的历元时间算起,以天为单位)
我有一些Java代码,它返回给定纪元时间的ISO-8601时间格式返回ISO-8601时间格式(从Java中的历元时间算起,以天为单位),java,time,epoch,Java,Time,Epoch,我有一些Java代码,它返回给定纪元时间的ISO-8601时间格式 public String getISO8601(String epochTime) { long epoch = Long.parseLong(epochTs); ZoneId zone = ZoneId.of("Europe/London"); LocalDate then = Instant.ofEpochMilli(epoch).atZone(zone).toLocalDate(); Lo
public String getISO8601(String epochTime) {
long epoch = Long.parseLong(epochTs);
ZoneId zone = ZoneId.of("Europe/London");
LocalDate then = Instant.ofEpochMilli(epoch).atZone(zone).toLocalDate();
LocalDate today = LocalDate.now(zone);
Period diff = Period.between(then, today);
return diff.toString();
}
当我向它传递epochTime时:1512259200000
这个大纪元的时间是:太阳2017-12-03 00:00:00
因此方法getISO8601将返回:P1Y
这太棒了!但是有没有什么办法我可以确保它永远只会在几天后回来。。。例如:P365D(而不是:P1Y)Period有一个getDays方法,返回期间的整数天数。Period有一个getDays方法,返回期间的整数天数。不幸的是
Period
不允许指定单位,但您可以使用until
方法来处理此问题,并指定您想要的天数差异:
public static Period getPeriodInDaysBetween(LocalDate from, LocalDate to) {
int days = (int) from.until(to, ChronoUnit.DAYS);
return Period.ofDays(days);
}
用它来代替句号。我相信,在之间,它会做你想做的事情
(第一行相当于MS90答案中的
ChronoUnit.DAYS.between(date1,date2)
。请使用您认为可读性更好的方法。)不幸的是Period
不允许指定单位,但您可以使用直到方法来处理此问题,指定您希望以天为单位的差值:
public static Period getPeriodInDaysBetween(LocalDate from, LocalDate to) {
int days = (int) from.until(to, ChronoUnit.DAYS);
return Period.ofDays(days);
}
用它来代替句号。我相信,在
之间,它会做你想做的事情
(第一行相当于MS90答案中的ChronoUnit.DAYS.between(date1,date2)
。请使用您认为可读性更好的代码。)当然,请查看以下代码:
public static long countDays(LocalDate date1, LocalDate date2) {
long daysInAPeriod = ChronoUnit.DAYS.between(date1, date2);
return daysInAPeriod;
}
当然,请查看以下代码:
public static long countDays(LocalDate date1, LocalDate date2) {
long daysInAPeriod = ChronoUnit.DAYS.between(date1, date2);
return daysInAPeriod;
}
当我执行返回期间.between(然后,今天).getDays()时代码>它返回:0,而不是返回期间.between(然后,今天).getDays()时的365dW代码>它返回:0,而不是