請閱讀到最后,我會盡量詳細解釋。
我有一個程式,它只適用于一個國家的當地人。具體來說,它適用于一個國家,但可以用于另一個國家。但是,所有小時、分鐘和日期都適用于一個國家。這就是為什么我認為程式應該在那個國家的日期運行,程式的日期應該從那個國家的實際日期中獲取,而不是從手機上的日歷中獲取。
用戶打開的應用程式:應用程式展示 21-11 月。(該國家/地區的日期)電話資料 20-11 月。(在他的祖國,日期仍然是11月20日)
(無論我的手機日歷如何,該應用程式都應顯示該國家/地區的確切日期。)
你不明白嗎?然后留下你的問題作為評論,請幫忙。
uj5u.com熱心網友回復:
您的問題不清楚,但您似乎想代表在兩個不同時區中查看的單個時刻。
捕獲在 UTC 中看到的當前時刻(偏移為零時-分-秒)。
Instant instant = Instant.now() ;
通常最好在 UTC 中進行思考、除錯、日志記錄、存盤、資料交換和大部分業務邏輯。調整到一個時區主要只是為了向用戶展示,并根據需要調整特定的業務規則。
調整為一個時區。
ZoneId zEdmonton = ZoneId.of( "America/Edmonton" ) ;
ZonedDateTime zdtEdmonton = instant.atZone( zEdmonton ) ;
調整到另一個時區。
ZoneId zTokyo = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime zdtTokyo = instant.atZone( zTokyo ) ;
我們的三個物體,Instant和一對ZonedDateTime物體,都代表著同一時刻,時間線上的同一點。
對于某個特定時刻,東京的日期可能是“明天”,而埃德蒙頓的日期可能是“昨天”。
uj5u.com熱心網友回復:
有很多不同的方法可以獲得它,這只是其中的兩種:
LocalDateTime.now().atOffset(ZoneOffset.of("-05:00")).toZonedDateTime();
LocalDateTime.now().atZone(ZoneId.of("Asia/Kuala_Lumpur"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/363584.html
