今天遇见了个bug,运行一年的项目突然日期比较错误了,最后发现是字符串日期直接比较的原因。
下面直接来调试结果:
很多人多说js字符串日期能直接比较,比较智能
alert("2016-10-01" > "2016-10-02");//false
//这里不管js是按时间格式还是字符串格式比较,返回的都是false
因此可以比较
但是当字符串日期不正规时,例如:
alert("2016-10-4" > "2016-10-30");//true
//在这里js是把它当做字符串比较的,因此不能直接比较,需转换成日期格式
var date1 = new Date("2016-10-4");
var date2 = new Date("2016-10-10");
alert(date1> date2);//false
yy/mm/dd格式的字符串日期也是一样的