我無法理解爲什麼javascript給出的有效日期等於1 dec給出無效日期的日期?這種行爲是否由於特定原因而被納入語言中?因爲它必須是無效的日期我的使用情況 新的日期(「2017年11月31日」)有效日期來自invalida日期的輸出Javascript
1
A
回答
1
首先,在Date
constructor沒有設計驗證輸入,甚至是挑剔。相反,它是明確設計不惜任何代價,以創建一個實例,像這樣的創意規則:
當日期被稱爲具有一個以上參數的構造,如果 值低於其合理的範圍更大(例如提供13作爲月份值的 或者作爲分鐘值的70),相鄰值將被調整爲 。例如。新的日期(2013,13,1)相當於新 日期(2014年1,1)
所以如果你真的需要驗證的約會,你需要尋找別的地方。
如約11/31/2017
,構造預計這樣的:
字符串值表示日期。該字符串應採用Date.parse()方法(IETF-compliant RFC 2822 timestamps以及ISO8601版本)識別的格式 。
...看起來不錯。但這如下(重點煤礦):
與Date構造日期字符串的解析(和Date.parse, 它們是等價的)強烈勸阻由於瀏覽器 分歧和矛盾。
如果我們深入Date.parse()
文件,我們終於閱讀本:
ECMAScript規範規定:如果String不符合 標準格式的功能可能回落到任何 implementation-具體的啓發式算法或實現特定的解析算法。無法識別的字符串或包含ISO格式字符串中的非法元素 值的日期應導致Date.parse()返回 NaN。
// Non-ISO string with invalid date values new Date('23/25/2014');
將:
然而,由ECMA-262所定義的可能或可能不導致NaN時,取決於 瀏覽器和值提供,例如在日期字符串無效的值不被識別爲ISO格式 在Safari 7
被視爲2015年11月25日,在火狐30和 無效的日期本地日期此回退的情況下是一個你的約會落入。
相關問題
- 1. JavaScript日期有效日期確認
- 2. 來自string的JavaScript日期?
- 3. 的JavaScript輸出日期
- 4. Javascript給出無效日期
- 5. 出生日期,加入日期和離開日期的有效日期
- 6. 框架來管理日期(生效日期和失效日期)
- 7. Javascript jquery日期「無效日期」錯誤
- 8. javascript日期轉換日期無效
- 9. JavaScript無效日期
- 10. JavaScript解析來自輸入類型=「日期」的週日值
- 11. javascript日期()對象返回有效但不新的日期()
- 12. 使用Javascript返回來自輸入類型日期的不正確日期
- 13. 來自無效日期的PHP DateTime createFormat
- 14. Linux日期:無效日期
- 15. asp.net有效日期
- 16. 查看javascript有效日期是審查日期之前
- 17. 產品失效日期(意外輸出)
- 18. 來自控制器的javascript日期
- 19. 輸出單個日期的Javascript數組
- 20. Oracle日期沒有來自java的日期
- 21. 輸出日期範圍內的所有日期
- 22. JavaScript的檢測有效日期
- 23. 無效日期返回無效日期
- 24. 我如何找到最接近的有效日期作爲無效日期字符串給出的日期?
- 25. 比較日期來決定輸出
- 26. 我有javascript日期
- 27. 來自EditText的日期
- 28. 來自Webhook的日期
- 29. 如何在json中輸出javascript日期
- 30. Javascript輸出根據日期變化
我從來沒有能夠學習Date構造函數解析器的所有規則和異常。你確定它應該總是拒絕美國格式的日期嗎? –
http://stackoverflow.com/questions/8098202/javascript-detecting-valid-dates – msg