为了账号安全,请及时绑定邮箱和手机立即绑定

js 日期比较 为什么 格式不一样就不行了,它的底层是怎么转换的?

js 日期比较 为什么 格式不一样就不行了,它的底层是怎么转换的?

白板的微信 2018-07-26 12:22:46
var arr1 = ['2018-03-03','2018-03-04','2018-03-05','2018-03-12','2018-04-05','2018-04-12','2018-12-06']; for(var i=0; i<arr1.length;i++) {     if((arr1[i] >= "2018-03-03" && arr1[i] <= "2018-04-13")) {         continue;     }     console.log(arr1[i]) } 输出2018-12-06 发现日期只要格式一样可以像上面这样直接比较         var arr1 = ['2018-3-3','2018-3-4','2018-3-5','2018-3-12','2018-4-5','2018-4-12','2018-12-6']; for(var i=0; i<arr1.length;i++) {     if((arr1[i] >= "2018-3-3" && arr1[i] <= "2018-4-13")) {         continue;     }     console.log(arr1[i]) } 输出2018-3-12,2018-4-5,2018-12-6         但把0去掉会出现问题,格式不一样了     var a = '2018-03-02'; var b = '2018-03-03'; var sum1 = 0; var sum2 = 0; for(var i=0; i<a.length; i++) {     sum1+=''+a[i].charCodeAt(0);     sum2+=''+b[i].charCodeAt(0);     console.log(a[i].charCodeAt(0) ,  b[i].charCodeAt(0)); } console.log(sum1); console.log(sum2); console.log(a.charAt(a));     我试着用charCodeAt函数转成Unicode,以为它转成Unicode后再做比较,但貌似不是这样的,想知道它底层是什么转换的,为什么格式不一样就不行了
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

 就是按照字符Unicode 编码进行比较,按照对应的位置进行比较,一样比较后续的
2018-12-1,2018-3-1,日期比较肯定第一个大于第二个,你按照字符串比较,1<3的unicode,所以停止比较后面的大于前面的导致出错

所以不足二位要前面补0才不会出错,否则要转为日期对象后再对比


查看完整回答
反对 回复 2018-08-02
  • 1 回答
  • 0 关注
  • 826 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信