亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用相同參數的不同調用與 LocalDateTime 的不同結果

使用相同參數的不同調用與 LocalDateTime 的不同結果

呼如林 2022-05-12 18:44:12
問題是,我必須將代碼從 Calendar 對象更改為 LocalDateTime 對象。但我最后沒有得到相同的時間戳。在第一次調用中,我得到了與 localDateTime 相同的結果,在接下來的調用中,我得到了其他時間戳,并且我使用相同的參數來計算時間戳。我不知道為什么我會得到不同的結果。這對我來說不合邏輯。我想做的是:我得到一個UTC時間戳。我想將它設置在德國(歐洲/柏林)時間(對于夏季和冬季很重要)。然后我想計算一天的開始(00:00)和一天的結束(23:59)。然后我想得到這個時間的時間戳。我用 spring-boot 構建了一個 API。上述函數由 spring-boot 中的控制器類調用。API 啟動后的第一次調用計算預期結果。但是所有下一個調用都會給出其他結果。始終有 7200 的差異。我嘗試了使用 localDateTime 的其他方法,但它從未給出與日歷相同的時間戳。本地日期時間方式:LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(timestamp), ZoneId.systemDefault());LocalDateTime dayStartLocal = localDateTime.withHour(0)    .withMinute(0)    .withSecond(0)    .withNano(0);ZonedDateTime startZonedDateTime = dayStartLocal.atZone(ZoneId.systemDefault());long dayStartTimeStamp = startZonedDateTime.toInstant().getEpochSecond();LocalDateTime dayEndLocal = localDateTime.withHour(23)    .withMinute(59)    .withSecond(59)    .withNano(999);ZonedDateTime endZonedDateTime = dayEndLocal.atZone(ZoneId.systemDefault());long dayEndTimeStamp = endZonedDateTime.toInstant().getEpochSecond();日歷方式:Calendar cal=Calendar.getInstance();cal.setTimeInMillis(timestamp*1000);cal.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"));cal.set(Calendar.HOUR_OF_DAY,0);cal.set(Calendar.MINUTE,0);cal.set(Calendar.SECOND,0);cal.set(Calendar.MILLISECOND,0);long dayStartTimeStamp = calendar.getTimeInMillis()/1000L;cal.set(Calendar.HOUR_OF_DAY,23);cal.set(Calendar.MINUTE,59);cal.set(Calendar.SECOND,59);cal.set(Calendar.MILLISECOND,999);long dayEndTimeStamp = calendar.getTimeInMillis()/1000L;我想要參數時間戳 1536933600。結果是 1536876000 和 1536962399。但是我在 localDateTime 方法的第一個請求之后得到了 1536883200 和 1536969599。
查看完整描述

1 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

您正在為代碼使用系統默認區域,為java.time代碼使用歐洲/柏林區域Calendar。這7200很可能是您的系統時區與歐洲/柏林(2 小時)之間的差異。


全部替換ZoneId.systemDefault()為ZoneId.of("Europe/Berlin"),您將在兩個版本中獲得相同的值:


timestamp = 1536933600

dayStartTimeStamp = 1536876000

dayEndTimeStamp = 1536962399


查看完整回答
反對 回復 2022-05-12
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號