首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >表示JavaScript中与时区无关的日期

表示JavaScript中与时区无关的日期
EN

Stack Overflow用户
提问于 2013-04-27 22:12:29
回答 2查看 142关注 0票数 3

我正在开发一个非常小的JavaScript库,允许用户根据日期检索内容。对于这些内容,日期只是一个标识符,而时区是完全不相关的(请按照Dilbert翻转日历的思路来考虑)。无论你在美国还是澳大利亚,“五一四”的内容都是一样的。

当前用于检索数据的函数以日期对象作为参数。在函数中,时区将被忽略。这种方法有意义吗?还是用一个独立于时区的标识符(比如2012-01-01)作为参数比较好呢?使用日期对象方法,浏览器进行的时区调整是否会导致返回错误数据的风险?

EN

回答 2

Stack Overflow用户

发布于 2013-04-27 22:15:42

使用Date.getUTC*()函数如何?UTC时间对每个人来说都是一样的。

票数 2
EN

Stack Overflow用户

发布于 2013-04-28 21:03:29

这个方法在你自己的答案中唯一的问题是,它没有解释不明确的时间。这种情况发生在夏令储蓄的倒退过渡中。

例如,将计算机的时区设置为美国山区时间( windows上的“山区时间(美国&加拿大)”,或mac/linux上的“美国/丹佛”)。然后重新启动浏览器并运行以下javascript:

代码语言:javascript
复制
var dt = new Date(2013,10,3,1,0);
alert(dt);

这是2013年11月3日凌晨1点但你不知道它代表的是哪一点钟。是在过渡前的山区夏令时间(UTC-6),还是在之后的山区标准时间(UTC-7)?无法判断,JavaScript将只使用标准时间。

现在,如果您需要的是2013-11-03 01:00 -那么您是正确的。您可以忽略偏移量,并完成它。但是,如果您要将该值用于任何有意义的东西--比如记录一个时间点,或者从另一个时间点减去它们之间的时间点,那么如果没有偏移量,您就无法解决这个问题。

不幸的是,在JavaScript中没有很好的解决这个问题的方法。最接近的是Moment.js,但它仍然是还不完美。不过,它比Date对象本身更好,因为它绕过了浏览器的不一致性,并提供了更好的解析和格式化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16257387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档