4

我需要将04/06/13(例如)转换为长日期 - Tue Jun 04 2013 00:00:00 GMT+0100 (BST)。如何使用 Javascript 做到这一点?我知道如何将长日期转换为短日期 - 而不是相反。

4

4 回答 4

4

您可以尝试构造函数的解析功能,然后您可以将其结果字符串化Date

> new Date("04/06/13").toString()
"Sun Apr 06 1913 00:00:00 GMT+0200" // or something

但是解析是依赖于实现的,不会有很多引擎能DD/MM/YY正确解释你的奇怪格式。如果您使用过MM/DD/YYYY,它可能会在任何地方被识别。

相反,您想确保它是如何解析的,所以必须自己做,并将单个部分输入构造函数:

var parts = "04/06/13".split("/"),
    date = new Date(+parts[2]+2000, parts[1]-1, +parts[0]);
console.log(date.toString()); // Tue Jun 04 2013 00:00:00 GMT+0200
于 2013-05-18T17:46:20.197 回答
2

split 方法的替代方法是使用 lastIndexof 和 slice 来将年份更改为 ISO8601 格式,然后给出一个已知可跨浏览器工作的非标准字符串,然后使用日期解析方法。(假设有问题的固定模式)

然而,

如果你想确保它是如何解析的,你必须自己做,并将单个部分输入构造函数:

,这意味着使用 split 方法,请参阅@Bergi 答案

var string = "04/06/13",
    index = string.lastIndexOf("/") + 1,
    date = new Date(string.slice(0, index) +  (2000 + parseInt(string.slice(index), 10)));

console.log(date);

输出

Sat Apr 06 2013 00:00:00 GMT+0200 (CEST) 

jsfiddle 上

或者另一种选择是使用moments.js

var string = "04/06/13";

console.log(moment(string, "DD/MM/YY").toString());

输出

Sat Apr 06 2013 00:00:00 GMT+0200 (CEST) 

jsfiddle 上

于 2013-05-18T18:43:58.707 回答
1

您可以使用:

new Date(2013, 06, 04)

...或直接使用日期字符串(即表示parse方法接受的日期的字符串):

new Date("2013/06/04");

...或通过指定日期的不同部分,例如:

new Date(year, month, day [, hour, minute, second, millisecond]);

看看这个

于 2013-05-18T17:44:26.920 回答
0

您必须将 13 作为 2013 否则将采用默认 1913

alert(new Date('04/06/2013'));
于 2013-05-18T17:47:57.460 回答