我找不到編輯 GMT 日期的方法
我收到格式為“yyyyMMdd”的“params.date”一個字串,所以這是我的流程:
Date date = new SimpleDateFormat('yyyyMMdd').parse(params.data)
System.out.println(sdf.parse(params.data))
輸出:
Thu Nov 17 21:00:00 GMT-03:00 2022
我需要它:
Thu Nov 17 21:00:00 GMT-00:00 2022
有人能幫我嗎?
uj5u.com熱心網友回復:
幾個要點:
- Thu Nov 17 21:00:00 GMT-03:00 2022 不等于 Thu Nov 17 21:00:00 GMT-00:00 2022。Thu Nov 17 21:00:00 GMT-03 的日期時間: 00 2022 等于 Fri Nov 18 00:00:00 GMT 00:00 2022 的日期時間,您可以通過將 3 小時添加到 Thu Nov 17 21:00:00 GMT-03:00 2022 來獲得。
- 您的時區偏移量為 -03:00,因此
java.util.Date物件顯示時使用默認時區偏移量。請注意,java.util.Date它并不代表真正的日期時間,而是為您提供距紀元的毫秒數,然后該Date#toString實作應用系統的時區來呈現字串。 - java.util日期時間 API 及其格式化 API已
SimpleDateFormat過時且容易出錯。建議完全停止使用它們并切換到現代日期時間 API。
使用 java.time API 進行演示:
import java.time.LocalDate;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String data = "20221118";
LocalDate date = LocalDate.parse(data, DateTimeFormatter.BASIC_ISO_DATE);
ZonedDateTime zdt1 = date.atStartOfDay(ZoneOffset.UTC);
ZonedDateTime zdt2 = zdt1.withZoneSameInstant(ZoneOffset.of("-03:00"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss 'GMT'xxx uuuu",
Locale.ENGLISH);
System.out.println(formatter.format(zdt2));
System.out.println(formatter.format(zdt1));
}
}
輸出:
Thu Nov 17 21:00:00 GMT-03:00 2022
Fri Nov 18 00:00:00 GMT 00:00 2022
從Trail:Date Time了解有關現代日期時間 API 的更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536966.html
標籤:爪哇日期日历
