gpt4 book ai didi

Java XMLGregorianCalendar 正在改变时间 - 奇怪的行为

转载 作者:行者123 更新时间:2023-12-02 16:11:47 28 4
gpt4 key购买 nike

我有一个日期作为输入 = 2021-03-12T10:42:01.000Z.... 我想转换成这种格式:

String pattern = "yyyy-MM-dd'T'HH:mm:ssZ";


public String getDate(XMLGregorianCalendar input) {
DateFormat f = new SimpleDateFormat(pattern);
input.toGregorianCalendar().setTimeZone(TimeZone.getTimeZone(ZoneOffset.UTC));
String output = f.format(input.toGregorianCalendar().getTime());
System.out.println(output);
}

2021-03-12T12:42:01+0200

基本上,它会增加 2 小时。可能跟时区有关,我没在别的电脑上测试过。我有两个问题:

  • 为什么会这样
  • 我能做些什么来避免它?这是一个旧应用,所以我不想做大的改变

谢谢

最佳答案

Basically, it's adding 2hs more

不是真的。它为您提供同一时间的输出,但在您的系统本地时区 - 因为您正在创建 SimpleDateFormat 而不指定时区(或文化):

DateFormat f = new SimpleDateFormat(pattern);

我个人建议完全避免使用 java.text.SimpleDateFormat,而更喜欢 java.time 类型和格式化程序。但是,如果您确定要使用 SimpleDateFormat,只需确保将时区设置为 UTC(假设您始终需要 UTC)并理想地设置区域性(例如 Locale.ROOT)。

关于Java XMLGregorianCalendar 正在改变时间 - 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67800046/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com