对不起,如果这是一个重新发布。我没有找到合适的答案。
请忽略最佳实践和已弃用的 API 的使用。
我想将以下日期“ Mon May 19 02:16:52 EDT 2003 ”格式化为“ MM/dd/yyyy HH:mm:ss ”。同样,我只想更改输出格式,这是从我在 EST 中的笔记本电脑上执行的。
我的 Windows 区域设置是:
当前时区:东部夏令时间
时区:(GMT-05:00) 东部时间(美国和加拿大)
为夏令时更改自动调整时钟:选中
这个java代码做到了:
Date aDate = new Date("Mon May 19 02:16:52 EDT 2003");
SimpleDateFormat sdf = new SimpleDateFormat( "MM/dd/yyyy HH:mm:ss");
System.out.println("Formatted Date: " + sdf.format(aDate));
输出是
Formatted Date: 05/19/2003 02:16:52
现在我将 windows 设置更改为以下(仅取消选中 DST 设置)
当前时区:东部夏令时间
时区:(GMT-05:00) 东部时间(美国和加拿大)
为夏令时更改自动调整时钟:选中
输出是:
Formatted Date: 05/19/2003 01:16:52
问题:
- 为什么输出减少了一个小时?
- java在格式化时是否使用Windows DST设置?我虽然 java 为各种时区的 DST 设置时间维护自己的数据。