我從數據庫中獲取日期的格式如下:爲什麼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