2012/12/04

[WorkLog] Is string "2012-12-03x" a Date? : 字串 "2012-12-03x" 符合日期格式嗎?

剛在用 ASP.NET 的 CustomValidator 加一下檢查日期格式的功能(好啦,我知道現在有更先進方便的功能,有空再開 What's Old),想說很久沒寫 client 端的日期格式檢查,就來加一下,找到一種是用 javascript 的 Date.parse("日期字串") 測試的功能,只要它回傳 NaN 就代表不是正確日期。寫上去後就開始隨便亂打試一下啦,試了幾下都有正常判斷出來,順手在結尾加個 x 再試,通過了!?加個 xx 再試,沒通過。再改回 x ,又通過了!?蛤?
(此時瀏覽器為 IE9)

就把它打上 jsFiddle 準備貼上來(好不容易遇到個梗),然後又順手開了有安裝的瀏覽器都跑一次看看,用 "2012-12-03"、"2012-12-03x"、"2012-12-03xx" 去做測試條件。Chrome 的 Date.parse 有將 "2012-12-03x"(實際上是 "2012/12/03x"我有把減號換掉)輸出為 NaN,是正確的。Firefox 是正確的。正想說「又是 IE ...」的時候,Opera 令人意外的也是錯的!Safari 是正確的。

來張大合照

原因是什麼?我也不知道,大家可以自己玩一玩。



番外篇,
把 x 換成 z ,在 .NET 的 Convert.ToDateTime("2012-12-03z"); 也會通過哦!

後記,
我在 javascript 用 Date.parse("2012/13/55") 也不會有問題耶!囧_y ))
一定是哪裡有誤會!我還是改用其他方式好了。這篇就當我裝笑維吧 XD
待續 ... 往下一篇

沒有留言:

張貼留言