在Javascript date对象中存储日期的DST问题
DST problem storing date in Javascript Date object
我有这个简单的Javascript代码
var d = new Date(2011, 9, 8);
alert(d); // Show: Fri Oct 7 23:00:00 UTC-0400 2011
重要提示:我的时区是"Santiago de Chile",我将电脑时钟设置为:2-Oct-2011。
提醒显示当天是7日!!为什么?我怎样才能做对呢?(问题只在这一天)
根据本页,智利的夏令时更改总是在10月的第二个完整周末,并从午夜开始(让我们忽略今年延长的夏令时,因为很可能您的计算机不知道它)。
这意味着,正如我之前链接到的脚本所显示的那样,在您的时区2011年10月8日午夜不能用UTC-0300表示,因此它会自动切换到UTC-0400来表示相同的时间。
我可以重现你的问题在我的时区(阿姆斯特丹,UTC+1/2h)通过要求星期日2011年3月27日,上午2:00(与当前时区CEST=UTC+0200)(在夏令时(CEST)开始,时钟从UTC+0100调整到UTC+0200)(记住这是完全相反的在北半球))
new Date(2011, 2, 27, 2, 0, 0, 0);
不能有效地用UTC+0200表示,所以系统选择UTC+0100输出
Sun Mar 27 2011 01:00:00 GMT+0100 (CET)
所以,它在Unix时间中是相同的时间,只是在您的本地时区中表示不同。
是的,我知道10月8日是星期六,夏时制变更从星期天午夜开始,但这是我能得到的最接近的。
更新:我现在可以通过将WinXP机器的时区设置为Santiago 和来重现您的问题,让操作系统自动调整DST 和提醒new Date(2011, 9, 9)
(这是星期天,显示为星期六;你的设置一定有些奇怪)。当然你不能在客户端控制这些设置。
要解决这个问题,我必须知道你到底需要什么:如果你只是想要一些日期/时间显示,不考虑时区和夏令时,只需使用UTC,如:
var d = new Date(Date.UTC(2011, 9, 9));
alert(d.toUTCString()); // Shows: Sun, 9 Oct 2011 00:00:00 UTC
要显示/计算Date
对象的各个部分,使用相应的UTC方法。
- 比较从函数和生成的日期对象
- Json数据包含日期和时间格式
- Javascript日期格式类似于ISO,但本地
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在JavaScript中延长当前日期
- 两位数的月份日期验证
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- NodeJS日期格式不起作用
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 使用当前日期生成随机id
- primefaces日历可以禁用过去的日期和时间吗
- 获取系统的时区名称(IST,PST,DST)'IE中java脚本中的s日期
- 哪个 JS 日期时间选取器正确处理 DST 转换
- 在 JavaScript 中使用 DST 的日期范围
- 如何在MongoDB中建模和查询办公时间(日期、时区、dst)
- 检查日期是否为DST移位
- 需要使用Javascript日期对象在DST转换时显示本地时间
- 在Javascript date对象中存储日期的DST问题