在 JavaScript 中解析日期字符串的意外结果

Unexpected results parsing date strings in JavaScript

本文关键字:字符串 意外 结果 日期 JavaScript      更新时间:2023-09-26

我正在开发一个JavaScript应用程序。我有两个不同的字符串日期31/10/20131/11/2013,我用new Date(string).getTime();创建了这两个日期的实例

但它显示这个(同一日期)作为结果:

console.log(date_s + " after new date " + date );
31/10/2013 after new date Fri Nov 1 00:00:00 UTC 2013
1/11/2013 after new date Fri Nov 1 00:00:00 UTC 2013

new Date(string)中没有有效的字符串

初始化日期的一些示例

var my_date=new Date(2013,10,31)

以及有关 http://www.w3schools.com/js/js_obj_date.asp 的所有文档

31/10/2013不是

有效的日期字符串,除非您正在进行一些本地化。对于 en-US 的默认本地化设置,应10/31/2013 。您的字符串的意思是"2013 年的第 31 个月",这会new Date('31/10/2013')推到 2015 年的某个时间,因为这是它解析由于"第 31 个月"而确定的日期的地方。

如果你

想要一个简单的解决方案,试试moment.js - 一个强大的javascript日期解析器/格式化程序/验证器/操纵器。

现在,您可以使用如下语法解析日期 [doc]:

//this will gives you a correct date object
moment('31/10/2013', 'DD/MM/YYYY').toDate(); 

否则,您可以随时拆分和重建日期对象。