为什么Javascript正在更改我的日期
Why is Javascript Changing My Date?
我从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("-"))
相关文章:
- 无法将我的日期日/月/年格式化为月/日/年
- 图形未呈现我的日期数据
- 谁能解释为什么我的日期函数通过 JS 日期对象给了我错误的转换
- 为什么我的日期比较函数会抛出错误
- JavaScript 根据浏览器时区更改我的日期
- 如何在我的日期选择器上只允许选择星期日
- 为什么Javascript正在更改我的日期
- 为什么我的日期输入字段在AngularJS中抛出类型错误
- 只需转换我的日期格式
- 我想根据需要设置图像大小,这是我的日期选择器脚本
- toDateString()递减我的日期
- 为什么创建谷歌图表数据表会误解我的日期
- 为什么 JSON.stringify 搞砸了我的日期时间对象
- 以特定格式显示我的日期
- 可以'我的日期选择器似乎不适合显示在某些页面上
- 当注意力不集中时,关掉我的日期选择器
- 如何动态设置一个有限的范围为我的日期通过jQuery
- 我如何把我的日期正确地从浏览器传输到服务器
- 我的日期表不太好用
- 我怎样才能从我的日期选择器中得到日、月、年呢?