0

我正在尝试将javascript中的日期从 MM/dd/yyyy 转换为 yyyy/MM/dd

所以这有效

var d = new Date("08/08/2012");
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate();
document.write(dateString);

输出 = 2012/7/8

///////////////////////////////////////// /

不是

var dateString = "08/08/2012";
var d = new Date(dateString);
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate();
document.write(dateString);

这也不是:

var dateString = "08/08/2012";
var d = Date.parse(dateString);
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate();
document.write(dateString);

如何使它与字符串变量一起使用?谢谢

~喵喵

4

3 回答 3

5
var dateString = "08/08/2012";
var d = new Date(dateString);
dateString = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate();
document.write(dateString);

那应该而且确实有效。请记住,JavaScript 将月份存储为零索引值。

如果你想有前导零,那么你必须做一些魔术:

var dateString = "08/08/2012";
var d = new Date(dateString);
dateString = d.getFullYear() + "/" + ('0' + (d.getMonth()+1)).slice(-2) + "/" + ('0' + d.getDate()).slice(-2);
document.write(dateString);​

jsFiddle

您的Date.parse( )示例不起作用的原因是该函数返回时间戳(自 1970 年以来的毫秒数),而不是 Date 对象。因此,您不能调用getFullYear()时间戳上的函数。

于 2012-08-09T20:20:51.850 回答
4

如果您需要做的只是重新排序值,您可以执行以下操作:

var dateString = "08/08/2012";
var dateElements = dateString.split("/");
var outputDateString = dateElements[2] + "/" + dateElements[0] + "/" + dateElements[1];
document.write(outputDateString );
于 2012-08-09T20:31:53.183 回答
1

我可以向 MrSlayer 确认该代码在 jsFiddle 中有效。

您的使用尝试Date.parse()实际上应该是 using Date(String(dateString))

不要忘记每个月加 1。

于 2012-08-09T20:32:47.540 回答