我从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)
咦?为什么我失去了一天?
答案 0 :(得分:2)
这确实有一个有趣的情况,这是由于当你创建一个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)
案件如下:
您可以在行动here
中看到它编辑:注意到loxxy指出的错误
答案 1 :(得分:0)
我建议改为2013,08,08
似乎它不喜欢连字符
http://www.w3schools.com/jsref/jsref_obj_date.asp
日期对象需要
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
答案 2 :(得分:0)
这应该有效:
new Date("2013-08-08".split("-"))
所以在你的情况下:
new Date(mydate.substring(0,10).split("-"))