我有这样一段代码,我想编辑它以返回ZonedDateTime
类型的对象:
private int timeToLive = 60;
private int timeToLiveBuffer = 2;
LocalDateTime expirationDate(Clock clock) {
long millis = ZonedDateTime.now(clock)
.plusMinutes(timeToLive)
.plusMinutes(timeToLiveBuffer)
.toInstant()
.toEpochMilli();
// JDK 8 time zone => Joda time zone => Joda date time
TimeZone timeZone = TimeZone.getTimeZone(clock.getZone());
DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(timeZone);
return new LocalDateTime(millis, dateTimeZone);
}
private DateTime newExpirationDate() {
return expirationDateCalculator.expirationDate(Clock.systemUTC()).toDateTime();
}
我试着让它更简单,就像这样:
LocalDateTime expirationDate(@NotNull Clock clock) {
long millis = ZonedDateTime.now(clock)
.plusMinutes(timeToLive)
.plusMinutes(timeToLiveBuffer)
.toInstant()
.toEpochMilli();
return ZonedDateTime.of(millis, ZoneId.of("UTC"));
}
private ZonedDateTime newExpirationDate() {
return expirationDateCalculator.expirationDate(Clock.systemUTC()).toDateTime();
}
但是得到转换的错误。有没有可能用一种更简单的方法来转换它,使用ZonedDateTime?
1条答案
按热度按时间mm9b1k5b1#
请注意,
LocalDateTime
是org.joda.time
内部的一个库,ZonedDateTime
是java.time
内部的一个库。这意味着你需要通过不同的时间库来转换时间。所以它可以实现与ldtToZdt
函数相等的毫秒。输出将是: