我有一個 IST 格式的日期。這類似于
2021-12-07T00:00:00.595 0530
我有上述輸出的以下代碼
val fromtTime = Date()
val startOfDay = fromtTime.startOfDay()
val dateFormat = SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
)
val startOfDate = dateFormat.format(startOfDay)
startOfDay 只是一個擴展函式,就像這樣
fun Date.startOfDay(): Date {
val now = Calendar.getInstance()
now.time = this
now.set(Calendar.HOUR_OF_DAY, 0)
now.set(Calendar.MINUTE, 0)
now.set(Calendar.SECOND, 0)
return now.time
}
但是,后端真正想要的是帶有 -8:00 的以下格式。
2021-12-07T00:00:00-08:00
每當我選擇時區為“America/Los_Angeles”時,有什么方法可以將其格式化為在字串的末尾有-08:00,因為“America/Los_Angeles”的時區應該是從 -8 小時開始格林威治標準時間。
uj5u.com熱心網友回復:
時間
我建議您使用 java.time,現代 Java 日期和時間 API,來處理您的日期和時間作業。請原諒我的 Java 語法。
String forBackend = LocalDate.now(ZoneId.systemDefault())
.atStartOfDay(ZoneId.of("America/Los_Angeles"))
.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
System.out.println(forBackend);
我剛剛在亞洲/加爾各答時區運行了這段代碼(在 2021-12-08 午夜后的第一個小時內)。輸出是:
2021-12-08T00:00:00-08:00
ALocalDate是沒有時間或時區的日期,所以LocalDate.now()只給我們印度的當前日期(當亞洲/加爾各答是我們的默認時區時)沒有時間。atStartOfDay()如果在 America/Los_Angeles 時區的日期相同,則呼叫給我們開始。最后,您要求的格式已內置,因此我們使用的是預定義的格式化程式,而不是撰寫我們自己的格式模式字串。
當夏令時 (DST) 在北美開始時,偏移量將-07:00改為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382560.html
