在 JavaScript 中将字符串解析为日期

新手上路,请多包涵

如何在 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 许可协议

阅读 724
2 个回答

字符串解析的最佳字符串格式是日期 ISO 格式以及 JavaScript Date 对象构造函数。

ISO 格式示例: YYYY-MM-DDYYYY-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 库,它允许使用指定的时区解析日期。

原文由 Pavel Hodek 发布,翻译遵循 CC BY-SA 3.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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题