栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

javascript日期时区问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javascript日期时区问题

Date
在Javascript中将字符串解析为时,
YYYY-MM-DD
格式上的值将解释为 UTC 值,而不是本地时间值。

关键是各部分之间用连字符分隔,并且字符串中没有时区信息。ECMAscript 5.1规范在§15.9.1.15中说:

…缺少时区偏移的值为“ Z”。

这意味着,如果您未指定偏移量,则将假定您的意思是UTC。

请注意,由于这与ISO-8601的说法相反,因此ECMAscript2015(6.0)中的行为已更改,在§20.3.1.16中指出:

…如果没有时区偏移,则日期时间将解释为本地时间。

因此,如果正确实施了ES6的此提供,则以前被解释为UTC的这种格式的字符串值将被解释为本地时间。

解决方法很简单。用斜杠替换连字符:

var s = "2000-01-01";var dt = new Date(s.replace(/-/g, '/'));

可以接受的另一种解决方法是为日期指定中午时间而不是午夜。这将被解析为本地时间,并且距离足以避免任何DST冲突。

var s = "2000-01-01";var dt = new Date(s + "T12:00:00");

另外,考虑一个像moment.js这样的库,它更明智。

var s = "2000-01-01";var dt = moment(s, 'YYYY-MM-DD').toDate();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575210.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号