如果你問爲什麼document.write IsDate(20/01/2012)
不寫true
原因是因爲你已經要求計算機做分工,然後評估它作爲日期。
20/01 = 20 => 20/2012 ~= 0.01
IsDate(0.01) => false
如果你真的想測試你有什麼試試這個代替(小調整)
Your: document.write IsDate(20/01/2012)
Mine: document.write IsDate("20/01/2012")
而且,只是爲了澄清http://en.wikipedia.org/wiki/Date_format_by_country
有些數里斯使用
dd/mm/yyyy
有的地方使用
mm/dd/yyyy
,這就是爲什麼國際標準化組織建議你做的事情有至少特異性最專一:
yyyy-mm-dd hh:mm:ss.ffffffffffff
注意的歲月 - >幾個月(哪一個月比哪一年更具體) - >天(事件發生的那一天是有用的) - >小時(不要遲到!) - >分鐘(由鍾保存) - >秒(現在你有一些想法什麼時候發生) - >小數秒(奧林匹克游泳!!)
年是非特定的。很多事情發生在一年之內。所以這些應該總是先解析。 ISO方式是傳遞日期信息的首選方式,並且當年不首先時,系統會嘗試智能地進行猜測。由於世界上有些地方做的是dmy
,有些做的是mdy
,而且由於您的起始兩個數字中只有一個超過了12,所以它假定您的意思是dmy
而不是mdy
。這裏沒有WTF。
爲了記錄在案,這裏是國家的列表,它主要是把每月第一個作爲傳統的問題在mdy
格式(不包括ISO格式這不是傳統,而是科學)
最後,如果你想編寫一個函數,將嘗試重新分析爲您的日期:
考慮,人們往往會打破用空格,句號,連字符或斜線的日期,他們可能把它寫成「20120817」,或者也可以包括時間。有可能是在中間有一個T,並且它可以具有在端部爲Z。
採樣輸入:(和他們所代表的日期)
2011-08-17 (august 17th)
2011-08-01 (august 1st or jan 8th?)
08-01-2011 (august 1st or jan 8th?)
08-17-2011 (august 17th)
17-08-2011 (august 17th)
2011-17-08 (I've never seen this ever)
2011/08/17 (august 17th)
2011.08.01 (august 1st or jan 8th?)
08\01\2011 (august 1st or jan 8th?)
08-17-2011 (august 17th)
17 08 2011 (august 17th)
正如你所看到的,是一個已經在這裏發生解析公平一點,那就是假設他們有一個10位的字符串,那10位數是日期。這裏有一些其他的日期格式:
08-01-12 (was that January 8th, 2012 or January 12th, 2008 or August 1st, 2012 ...)
15-03-13 (ok, so we have found the month is March, but the other two?)
1-1-1
8-8-8 (these two are easy, but which rule do they match?)
然後你不得不解析
20120817
20121708
20120801
01082012
08172012
因此,大家可以看到,解析函數似乎容易,但還有很多東西需要考慮,這是隻是日期。想讓我們來談談下一次?
201208171311 -> 2012-08-17 13:11 (1:11 PM)
20120817T1311 -> 2012-08-17 13:11 (1:11 PM)
20120817T0111P -> 2012-08-17 01:11 PM
這是一個錯字,您沒有引號中的最後日期嗎? – mellamokb 2012-08-17 17:43:52
這裏沒有錯字,則IsDate(MM/DD/YYYY)我的問題是,爲什麼有響應爲TRUE – 2012-08-17 17:46:56