在很久很久以前,和很多同事一样。我习惯用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月,所以无法通过。
原因就是小数点也被认作是一个日期的分隔符了。和'-' , '/' ,' '(空格) 等分隔符作用一样。然后也是一个合法的日期。所以小伙伴们如果小数会扰乱你的判断。最好预先排除掉小数点的可能性。其他分隔符一样的道理。