我想構建日期「2017-03-29 18:17:12 + 00」,但我得到了以下格式使用格式「2017-03-29 18:17:12 + 00」的日期格式是什麼
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ssZ";
2017-02-28 11:12:31+0000
我需要格式「2017-03-29 18:17:12 + 00」。
如何得到它?格式是什麼?
請提供您的輸入
我想構建日期「2017-03-29 18:17:12 + 00」,但我得到了以下格式使用格式「2017-03-29 18:17:12 + 00」的日期格式是什麼
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ssZ";
2017-02-28 11:12:31+0000
我需要格式「2017-03-29 18:17:12 + 00」。
如何得到它?格式是什麼?
請提供您的輸入
嘗試X
在您的格式字符串中輸入Z
。
嘗試X
這是ISO 8601 time zone
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ssX";
如果使用JDK 8 java.time
API,默認情況下將獲得所需的格式(ISO 8601)
。
System.out.println(OffsetDateTime.now(ZoneId.systemDefault())); // 2017-05-26T16:20:42.821+05:30
關閉!你在那裏有一個T,我沒有看到OP所要求的(當然,他/他應該使用現代類,他們也可以在沒有T的情況下產生字符串)。 –
要除掉T,可以在字符串上使用'.replace('T','')'或使用'.format(DateTimeFormatter.ofPattern(「yyyy-MM-dd HH:mm:ssX」)) 'OffsetDateTime'(我還沒有測試過) –
我會確保始終使用ISO8601。
由於shazin聲明你可以用X替換你的Z來執行接受日期。
至於另外我建議使用OffsetDateTime API這樣的:
OffsetDateTime time = OffsetDateTime.parse(YOUR_DATE_STRING);
這會給你一個OffsetDateTime對象,你可以用正確的時區工作。此外,如果你想輸入轉換爲本地時區或UTC時區,你可以使用
time.atZoneSameInstant(ZoneId.systemDefault());
請注意,並非所有時區通過的 小時的整數倍,從UTC偏移。所以當創建標準時,沒有人會認爲 是一個需要將時間轉換打印爲只有2位數字的需求。
,也許這就是爲什麼「Z」的時移佔位符轉換爲 「+」或「 - 」字符,只是數字。
我認爲,該解決方案是:
但請注意,在某些情況下,例如阿富汗(4小時30分) 或中部澳大利亞(10小時30分)這個2位數的時間偏移將是不準確的。
它是可行的,但是由於你已經很好地解釋了原因,在切斷它們之前至少應該檢查最後兩位數字是否爲'00'。 –
謝謝你!它按預期工作! – SST
關閉,但[ISO 8601](https://en.m.wikipedia.org/wiki/ISO_8601)是用於定義日期時間字符串的文本格式的標準。但實際上,爲了符合標準,這個字符串必須在中間而不是空格中使用「T」。此時不涉及時區,只有[UTC的偏移量](https://en.m.wikipedia.org/wiki/UTC_offset)爲零,表示[UTC](https://en.m .wikipedia.org/wiki/Coordinated_Universal_Time)本身。時區是一個「大陸/地區」,例如「美國/蒙特利爾」,它命名了特定區域使用的偏移量的變化歷史。 –