javascript 日期因时区而异

标签 javascript

var dt_now = '2-22-2013';//mm-dd-yyyy, this is dynamic in actual code
            dt_now = dt_now.split("-");
            dt_now = addZero(dt_now[2])+'-'+addZero(dt_now[0])+'-'+addZero(dt_now[1]);
            dt_now = new Date(dt_now);

我使用上面的代码将用户定义的文本转换为实际日期,以便在我的代码的其余部分中使用。它似乎对我来说工作正常,但在位于不同时区的另一个系统(我的时间 -12 小时)上,日期显示为 2 月 21 日 而不是 2 月 22 日,也就是说,它比预期日期晚一天运行。我不知道如何解决这个问题或者错误可能是什么。有什么建议吗?

最佳答案

为避免时区问题,请使用 UTC。您不必依赖图书馆;简单的 ISO 8601 日期字符串就足够了。请参阅Date.prototype.toISOString用于根据日期制作一个(compatibility)。

构造就像 new Date('yyyy-mm-ddT00:00Z') 一样简单,因此您只需对代码稍作更改即可创建一个日期

var dt_now = '2-22-2013';//mm-dd-yyyy, this is dynamic in actual code
dt_now = dt_now.split("-");
dt_now = addZero(dt_now[2])+'-'+addZero(dt_now[0])+'-'+addZero(dt_now[1])+'T00:00Z';
dt_now = new Date(dt_now);

Z 表示 UTC。我添加了一个时间 (T00:00),以便它与 toISOString 生成的时间匹配。

关于javascript 日期因时区而异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956272/

相关文章:

javascript - 包含在 ng 重复中

单击单选按钮时 Javascript 边框颜色不会改变

javascript - 如何使用 xmlhttprequest 将文件上传到 aws s3

javascript - 如何在 native react 中延迟获取请求时组件的渲染?

javascript - 无法返回数组 [Google 应用程序脚本]

javascript - 在 ExtJS 中将嵌套的表单数据保存回服务器

javascript - 响应 json 到 JavaScript

Javascript 对象在碰撞时粘在 div 对象上

javascript - Rails 4 - 将 Google Maps API JSON 返回值发送到 Controller

javascript - <FORM> 如果没有选中复选框,警告! .. 否则 .. 提交。 (JavaScript)