![](/img/trans.png)
[英]Elasticsearch alpine docker with jdk8 java.time.Instant causes epochSecond error
[英]JDK8 adjust time of a java.time.Instant
我正在嘗試調整java.time.Instant
的時間。
我試過這段代碼:
Instant validFrom = //from my method parameter
validFrom = validFrom.with(ChronoField.HOUR_OF_DAY, 19).with(ChronoField.MINUTE_OF_DAY, 00)
.with(ChronoField.SECOND_OF_DAY, 00).with(ChronoField.MILLI_OF_DAY, 00);
但我有一個例外:
java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay
at java.time.Instant.with(Instant.java:720)
這是非常期待閱讀文檔和檢查源代碼。 我不清楚為什么我不能這樣做。 是否有另一種方法可以在不進行多次轉換的情況下進行此操作?
這是因為Instant
沒有時區信息。 19:00小時不代表任何有用的東西,除非你附上一個時區。
您可以將其轉換為ZonedDateTime
對象,然后將其轉換回Instant
如下所示:
public void testInstant(){
Instant now = Instant.now();
ZonedDateTime utc = now.atZone(ZoneId.of("UTC"));
ZonedDateTime zonedDateTime = utc.withHour(19)
.withMinute(0)
.withSecond(0);
Instant instant = zonedDateTime.toInstant();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.