对不起,如果这是重新发布。我没有找到合适的答案。Java和Windows区域设置
请忽略最佳做法和使用已弃用的apis。
我想 “周一5月19日2时16分52秒2003 EDT” 格式化以下日期为 “MM/DD/YYYY HH:MM:SS”。同样,我只想改变输出格式,并且正在我的笔记本电脑上正在执行的东西。
我的Windows区域设置有:
当前时区:东部夏令时间
区:(GMT-05:00)东部时间(美国&加拿大)
自动调整夏时制变化的时钟:Ch ecked
这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
现在我改变窗口设置为以下(仅取消DST设置)
当前时区:东部夏令时间
区:(GMT-05:00)东部时间(美国&加拿大)
自动调整时钟为夏时制:经过
输出是:
Formatted Date: 05/19/2003 01:16:52
问题:
- 为什么输出关闭了一个小时?
- 即使格式化,java是否使用Windows DST设置?我虽然java维护自己的数据为不同时区的DST设置时间。
是的, Java使用OS settin不管是Windows还是其他操作系统 – GETah 2012-04-25 19:46:47
为什么java会改变我的输出呢?我告诉java要使用什么日期以及输出什么格式。 – user1318311 2012-04-25 19:50:22