今天遇见了个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格式的字符串日期也是一样的