这不是一个技术编程问题,但它与处理和显示Java中的时区有关。
在美国,有Eastern Time
和Pacific Time
等时区,在夏令时期间,它们是Eastern Daylight Time
和Pacific Daylight Time
,而当夏令时不是实际上,它们是Eastern Standard Time
和Pacific Standard Time
。
因此,由于夏令时从3月的第二个星期日开始,到11月的第一个星期日结束,会说3月到11月的日期在Eastern Standard Time
或Pacific Standard Time
无效?例如,以下日期技术上不存在吗?
2015年9月29日星期二上午10点太平洋标准时间
不应该是Pacific Daylight Time (PDT)
,还是只是PT
以避免必须指定Daylight
或Standard
?
答案 0 :(得分:3)
...会说三月到十一月之间的日期在东部标准时间或太平洋标准时间是无效的吗?
如果您正在谈论在特定时间没有观察到该特定细分的时区,那么是 - 它无效。东部标准时间始终为UTC-5,东部夏令时始终为UTC-4。如果你说EST是指UTC-4,你就错了。 (人们确实经常错误地使用它。)
然而,正如其他人所指出的那样,许多时区的地方都没有观察夏令时,即使他们周围的区域也是如此。如果你在夏天说MST,它在凤凰城有效,但在洛杉矶没有。
...或者只是简单地使用PT来避免指定日光或标准?
是的,您可以说mypackage-package.Rd
并省略PT
或S
。它通常以这种方式在电视上完成,但不像计算机那样频繁。此外,世界各地的时区也不适用(伦敦使用GMT和BST - 那里没有通用的通用缩写)。
答案 1 :(得分:2)
对EST
中的日期/时间说EDT
,例如7月4日在纽约,是无效的,但我们人类通常不关心并松散地使用EST
。这是错的,但无论如何我们都是这样做的。
在计算方面,我们力求精确,所以肯定无效。
但是VGR是对的。如果你所在的地方不遵守夏令时,即使是7月4日也可能处于“标准”时间。
答案 2 :(得分:1)
在Java中使用SimpleDateFormat
,指定其中一个似乎是有效的。打印后,您可以看到夏令时转换在解析时发生,即使调用setLenient(false)
也是如此。
示例:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMMM dd HH:mm:ss z");
sdf.setLenient(false);
Date d = sdf.parse("2015 September 29 10:00:00 PST");
System.out.println(d);
输出:
Tue Sep 29 11:00:00 PDT 2015
需要PST(太平洋标准时间)并在输出时将其转换为PDT(太平洋夏令时)。至少现在它确实如此。在撰写本文时,夏令时已经生效。
PDT也被接受:
Date d2 = sdf.parse("2015 September 29 10:00:00 PDT");
System.out.println(d2);
输出:
Tue Sep 29 10:00:00 PDT 2015
注意:这可能取决于拥有美国语言环境。由于这是我的默认语言环境,以上工作原理。如果这不是您的区域设置,请尝试在顶部的Locale.US
构造函数调用中添加第二个参数SimpleDateFormat
。