javascript - 有没有办法在 Javascript `Date` 对象中表示 2012 年 10 月 21 日?

标签 javascript date timezone

我注意到时区和 Javascript Date 对象有些奇怪。

在 Linux 机器上试试这个:

$ TZ='America/Sao_Paulo' js 
js> new Date(2012, 9, 21, 0, 0, 0).toString() 
"Sat Oct 20 2012 23:00:00 GMT-0300 (BRST)"

我发现不可能获得表示 2012 年 10 月 21 日的对象。每次尝试获取当天 00:00 到 01:00 之间的 Date 都会得到前一天的日期晚上 11:00 和 00:00。

(Windows 用户可以将他们的时区更改为巴西利亚/GMT-03 以体验相同的行为)

向此类日期对象添加一小时(或一天)会返回相同的日期

我想这与巴西那个特定日期的夏令时有关,但我绝对不知道如何处理。

我有一个循环遍历一个月中的几天(对于日历应用程序),在到达 2012 年 10 月 20 日时,它显然会永远循环。

一定是我做错了什么,但我不知道如何处理这种情况,因为我猜它也可能发生在其他时区。

在 Javascript 中处理 Date 的推荐方法是什么,以确保不会发生此类与时区/夏令时相关的问题?

最佳答案

这是绝对正确的行为。由于巴西本地时间 10 月 21 日根本不存在 DST 午夜。如果您只需要构建一个日历,您可以使用 new Date(2012, 9, 21, 0, 0, 0).toUTCString() 而不是 new Date(2012, 9, 21, 0, 0, 0).toString() 和其他 UTC methods .

例如,要创建 UTC 日期,您可以使用 new Date(Date.UTC(2012, 9, 21, 0, 0, 0));

关于javascript - 有没有办法在 Javascript `Date` 对象中表示 2012 年 10 月 21 日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705485/

相关文章:

javascript - 通过 id 组合对象数组并减少其嵌套对象

javascript - OpenLayers map 未正确加载

Java-Fake 系统时钟启动

.net - ASP.NET 3.5 : Difficulty getting timezone's current offset

javascript - 在 JavaScript 中获取客户端的 GMT 偏移量

java - 将 UTC 时间戳插入 MySQL - 夏令时时区

javascript - 如何在 javascript 中创建 dblclick 事件?

javascript - HTML5 检测对移动圆形元素的点击

date - 如何将 SelectOneMenu 标签中的日期转换为 dd/mm/yyyy

java - 在android中获取本地日期一样长,可能会感到困惑?