gpt4 book ai didi

java - 输入日期 Jan 03 但返回 Jan 02,为什么?

转载 作者:行者123 更新时间:2023-12-02 15:23:23 26 4
gpt4 key购买 nike

public static void main(String[] args) {
String opDate = "Tue Jan 03 00:00:00 MSK 2006";
String date = convertDate(opDate, "yyyyMMdd");

System.out.println("opDate: " + opDate);
System.out.println("date: " + date);
}

public static String convertDate(String opDate, String dateFormat) {
Date date = new Date();
// Mon Jan 02 00:00:00 MSK 2006
SimpleDateFormat dateParser = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);

try {
date = dateParser.parse(opDate);
} catch (Exception e) {
System.out.println("exception = " + e.toString());
}

SimpleDateFormat df = new SimpleDateFormat(dateFormat);
df.setTimeZone(TimeZone.getTimeZone("Russia/Moscow"));
String strDate = df.format( date.getTime() );

return strDate.trim();
}

输出:

opDate: Tue Jan 03 00:00:00 MSK 2006

date: 20060102

为什么返回 1 月 2 日?

最佳答案

问题在于获取“俄罗斯/莫斯科”时区。正确的区域信息 ID 是“欧洲/莫斯科”。更改 ID,问题就消失了:

df.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));

不幸的是,TimeZone.getTimeZone("random rubbish") 返回 UTC 时区,而不是以某种方式让您知道它已损坏。

关于java - 输入日期 Jan 03 但返回 Jan 02,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9888424/

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