在很久很久以前,和很多同事一樣。我習慣用DateTime.TryParse來判斷。直到。。。。。。
直到有一個角度刁鑽的客戶,填了一個小數 133.3,后來告訴我程序報錯了。
我當時看着程序運行的結果,exceuse me??什么鬼??
后來發現。DateTime.TryParse是可以通過類似 133.3,2018.12,7.5之類的帶小數點的字符串的。但是也不是所有的帶小數點的字符串都能通過。比方13.13就不能通過。
其實,這也算不上bug。是正常結果。133.3會轉換成0133/3/1 0:00:00 。2018.12當然就是2018年12月1號了。7.5是今年的7月5號。13.13無法通過,是因為沒有13月,所以無法通過。
原因就是小數點也被認作是一個日期的分隔符了。和'-' , '/' ,' '(空格) 等分隔符作用一樣。然后也是一個合法的日期。所以小伙伴們如果小數會擾亂你的判斷。最好預先排除掉小數點的可能性。其他分隔符一樣的道理。