xdate: 2013-10-26 =
Fri Oct 25 2013 20:00:00 GMT-0400 (Eastern Daylight Time)
xdate: Oct 26, 2013 =
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time)
xdate: 10/26/2013 =
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time)
xdate: Oct. 26, 2013 =
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time)
当我使用带有上述字符串的新日期(xdate)在javascript中创建日期时,它们似乎都能正常工作,除了前一天晚上8点出现的yyyy-mm-dd。不幸的是,这是HTML5 type = date创建的格式。任何方式让该字符串也创建一个正常的日期。
我想我的问题更多:为什么这种格式会创建一个4小时的日期。我使用2013-10-26创建一个日期,然后做一个getDate并获得第25个。这似乎不对!!
答案 0 :(得分:1)
前一天晚上8点出现
不,你的约会时间不会在前一天晚上8点到来。请注意,您创建的日期是UTC日期。 您看到的原因是因为您的当地时区是UTC(格林威治标准时间-4)之前的4小时。这只是基于您的本地时区计算的日期的 演示文稿 ,在内部,日期时间是 由毫秒数表示 自01/01/1970 00:00:00 UTC。
您可以使用Date.getTime()
获取日期的内部表示,这将在所有时区返回相同的值。例如,使用:
var date = new Date("2013-10-26");
当您的当地时区为GMT-4时:您会看到演示文稿为:Fri Oct 25 2013 20:00:00 GMT-0400
当您的当地时区为GMT + 7时。您会看到:Sat Oct 26 2013 07:00:00 GMT+0700
但date.getTime()
会返回 相同的值 。这是你应该关心的价值。
答案 1 :(得分:0)
您可以像这样创建数据并避免此timeone offset
问题:
xdate = '2013-10-26';
var date = new Date(xdate.replace(/-/g, ','));
<强>测试强>
var d1 = new Date(xdate); // Fri Oct 25 2013 20:00:00 GMT-0400 (EDT)
var d2 = new Date(xdate.replace(/-/g, ',')); // Sat Oct 26 2013 00:00:00 GMT-0400 (EDT)
注意d1
和d2
之间日期值的差异。
d2
因Oct 26 2013
到-
次替换而显示,
的正确值。