您确实在这里遇到了一个有趣的情况,这是由创建 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)
案件在哪里:
你可以在这里看到它的作用
编辑:注意到 loxxy 指出的错误