Javascript 日期 : what is the best way to deal with Daylight Savings Time?

标签 javascript date

在上一个问题中,我写了一个 javascript 日期函数,该函数神秘地停止于 11/07/101。感谢 stackoverflow 用户,我被告知我的问题是夏令时。 Javascript date, is this my error or did I find a bug?

所以我的最后一个问题是在 Javascript 中推荐的处理夏令时的方法是什么?

http://code.google.com/p/datejs/解决这个问题的最佳方法是什么?

最佳答案

最好的办法就是不处理夏令时。使用 UTC 方法,您不必担心跨越 DST 边界或任何其他时区不连续性(语言环境时区规则可能因更多原因而不仅仅是 DST 发生变化)。

var timestamp= Date.UTC(2010, 10-1, 31, 0, 0, 0); // zero-based month: 9->october
var nextday= new Date(timestamp+86400000); // add one day
var ymd= [
    nextday.getUTCFullYear(),
    nextday.getUTCMonth()+1, // zero-based month
    nextday.getUTCDate()
].join('-');
alert(ymd); // 2010-11-1

如果以上是用 new Date(2010, ...)getDate() 等完成的,它会返回 2010-10- 31,由于 DST 更改(无论如何在我所在的区域),日期添加失败。

遗憾的是,Date 中“默认”最明显的方法是关于本地时间的,尤其是因为 JavaScript 为脚本提供的“本地时间”实际是什么的上下文非常少。 UTC 是一个更稳定的命题。

关于Javascript 日期 : what is the best way to deal with Daylight Savings Time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110039/

相关文章:

java - 将字符串日期转换为长值并执行计算的问题

javascript - 使用 jQuery 修改类

javascript - 如何将此 .js 文件转换为 jsp 文件?

javascript - Nodejs 服务器/客户端套接字与 engine.io 连接

javascript - 如何使用 JavaScript 数组和 getDate 显示今天的日期?

mysql - 如何根据当前日期和 MySQL 中生成的序列号插入一个值?

SQL OVERLAPS 如何包含极端的日期?

javascript - 获取浏览器cookie

javascript - 使用 REAL 将数组转换为对象

php - 比较 "Y F jS, g:i a"格式的日期,例如 : "2018 September 3rd, 9:30 am"