我从数据库中获取日期的格式如下:为什么js从具有特定格式的Date对象中减去一天?
YYYY-MM-DD
当我创建一个使用此字符串一个JavaScript Date对象,它建立日期的前一天。
您可以在控制台测试:
var d = new Date("2015-02-01");
d
您将获得1月31日!我测试了很多理论,但没有人回答这个问题。
- 这一天是不是从零开始的,否则会给二月00,而不是01月31日
- 它不执行数学方程式,从一个月和/或一年
- 日期减去天( 2015年2月1日)=周三1969年12月31日
- 日期( “2015-01”)=周三2014年12月31日
- 这不是混淆了一天的一个月
- 日期(“2015年8月2日”)=星期六2015年8月1日
- 如果这是真的日期是2015年2月8日
- ,如果您使用不同格式的日期,它工作正常
- 日期( “2015年2月1日”)= 2015年2月1日
我的结论是JS做这个目的地。我试图研究'为什么',但找不到解释。 为什么js以这种方式构建日期,但仅限于此格式?是否有解决方法,还是必须构建日期,然后将其设置为第二天? PS:“如何从数据库中更改日期的格式”并不是我所要求的,这就是为什么我不在这里放置任何数据库信息的原因。
我不确定,但这可能是一个时区问题? – Phil 2015-02-05 13:05:18
你最后的问题和你的PS互相矛盾。我只是将数据库结果转换为支持格式并将其用于日期。不要添加或删除日子。至于为什么这样做......也许这样:给定一个日期字符串“2014年3月7日”,parse()假设一个本地时区,但给定一个ISO格式,如“2014-03-07”它会假设UTC的时区。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse – 2015-02-05 13:12:26
Chrome工作正常。 'new Date(“2015-02-01”);' - >'Sun Feb 01 2015 03:00:00 GMT + 0300(MSK)' – gorpacrate 2015-02-05 13:25:59