将字符串转换为日期Javascript

6

试图将一个字符串转换为Javascript日期。 我的字符串:

var fullDate = this.date + " " + this.time + ":00";

输出结果为:2016年12月24日 02:00:00

但是尝试将其转换为JavaScript日期对象:

 var k = new Date(fullDate); 

输出为无效的日期

甚至:var k = Date.parse(fullDate);

输出为NaN

欢迎任何帮助。

我之前一直按照http://www.datejs.com/的说明操作


1
你的日期/时间格式可能与你所在地区的格式不匹配,也不是ISO格式... 应该是其中之一。 - daniel.gindi
我不知道datejs.com上的指导是什么,但是试着阅读一些可靠的文档(例如https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date),并检查日期构造函数能理解哪些日期格式,实际上并不多。其他类似MomentJS的库可以解析更多种类的日期格式。 - ADyson
这实际上是一个很好的问题总结:https://dev59.com/-nA75IYBdhLWcg3wg5Rh#3257513 - ADyson
3个回答

5

您的格式无效。有效的格式是月/日/年,请尝试:

var fullDate = "12/24/2016 02:00:00";
var k = new Date(fullDate);

希望我能帮到你!

如果字符串包含毫秒,如何进行转换? - Dolphin

4

我刚刚为这个问题发布了一个答案/问题。 这是我的答案

总之,您需要先将字符串格式化为标准格式,然后才能使用new Date(string)方法。 这适用于许多浏览器(IE9+、Chrome和Firefox)。

stringFormat = moment(dateObject).format("YYYY-MM-DDTHH:mm:ss");
date = new Date(stringFormat);

0

这种情况发生是因为您没有为 new Date 提供有效的日期格式。 因此,日期格式不正确。 JavaScript中的默认日期格式是 dd / mm / yyyy

日期应该是这样的( mm / dd / yyyy ):

12/24/2015

然后您可以使用 var k = new Date(fullDate);

一个纯javascript解决方案来格式化日期(不使用moment.js):

var fullDate = "24/12/2016 02:00:00";
fullDate = fullDate.split(' ');

var date = fullDate[0].split(/\//);
var time = fullDate[1];

var newDate = date[1] + '/' + date[0] + '/' + date[2] + ' ' + time;
var k = new Date(newDate);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接