为什么Javascript正在更改我的日期

Why is Javascript Changing My Date?

本文关键字:我的 日期 Javascript 为什么      更新时间:2023-09-26

我从ajax请求中得到一个日期值,如下所示:

"2013-08-08T00:00:00"

这不好,所以我只分析了日期:

mydate = mydate.substring(0,10);

这给了我:

"2013-08-08"

太好了,现在我就把它变成一个真正的约会:

mydate = new Date(mydate.substring(0,10))

获得:

Wed Aug 07 2013 20:00:00 GMT-0400 (Eastern Daylight Time)

嗯?为什么有一天我输了?

这里确实有一个有趣的情况,这是由于当您创建Date对象时,除非您指定时区偏移,否则它会假设您的日期输入是UTC时间,然后进行转换。这只是因为您用'-'而不是'/'输入了值

编辑:更正,我认为您的日期可能会被视为UTC时间,然后转换为适当的EDT时间。这可以解释为什么设置精确的值或使用"/"会返回不同的结果。"/"可能表示EDT时间,而'-'表示UTC时间。

参见:

var asString = "2013-08-08T00:00:00" var mydate =
asString.substring(0,10);
var cDate1 = new Date(mydate);
var cDate2 = new Date(mydate.replace('-', '/'));
var asSplit = mydate.split('-'); 
var cDate3 = new Date(asSplit);
alert(cDate1 + "'n" + cDate2 + "'n" + cDate3);

它产生以下内容:

Wed Aug 07 2013 20:00:00 GMT-0400 (Eastern Daylight Time)
Thu Aug 08 2013 00:00:00 GMT-0400 (Eastern Daylight Time)
Thu Aug 08 2013 00:00:00 GMT-0400 (Eastern Daylight Time)

案例所在地:

  • 标准
  • 将"-"替换为"/"
  • 分为年/月/日

你可以在这里看到它的作用

编辑:注意到loxy 指出的错误

我建议改为2013,08,08似乎不喜欢连字符

http://www.w3schools.com/jsref/jsref_obj_date.asp

日期对象采用

var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

这应该有效:

new Date("2013-08-08".split("-"))

所以在你的情况下:

new Date(mydate.substring(0,10).split("-"))