如何在 JavaScript 中将字符串转换为 Date 对象?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
原文由 jslearner 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何在 JavaScript 中将字符串转换为 Date 对象?
var st = "date in some format"
var dt = new Date();
var dt_st = // st in Date format, same as dt.
原文由 jslearner 发布,翻译遵循 CC BY-SA 4.0 许可协议
不幸的是我发现
var mydate = new Date('2014-04-03');
console.log(mydate.toDateString());
返回“2014 年 4 月 2 日星期三”。我知道这听起来很疯狂,但它确实发生在某些用户身上。
防弹方案 如下:
var parts ='2014-04-03'.split('-');
// Please pay attention to the month (parts[1]); JavaScript counts months from 0:
// January - 0, February - 1, etc.
var mydate = new Date(parts[0], parts[1] - 1, parts[2]);
console.log(mydate.toDateString());
原文由 Roman Podlinov 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
字符串解析的最佳字符串格式是日期 ISO 格式以及 JavaScript Date 对象构造函数。
ISO 格式示例:
YYYY-MM-DD
或YYYY-MM-DDTHH:MM:SS
。可是等等! 仅使用“ISO 格式”本身并不能可靠地工作。字符串有时被解析为 UTC,有时被解析为本地时间(基于浏览器供应商和版本)。最佳实践应始终将日期存储为 UTC 并将计算作为 UTC。
要将日期解析为 UTC,请附加 Z - 例如:
new Date('2011-04-11T10:20:30Z')
。要以 UTC 显示日期,请使用
.toUTCString()
,要以用户的本地时间显示日期,请使用
.toString()
。有关 MDN 的更多信息 |日期 和 这个答案。
对于旧的 Internet Explorer 兼容性(IE 版本小于 9 不支持日期构造函数中的 ISO 格式),您应该将日期时间字符串表示拆分为其部分,然后您可以使用使用日期时间部分的构造函数,例如:
new Date('2011', '04' - 1, '11', '11', '51', '00')
。请注意,月份数必须少 1。替代方法 - 使用适当的库:
您还可以利用 Moment.js 库,它允许使用指定的时区解析日期。