为啥'2021-12-8'这种有格式的字符串可以比较大小

148 阅读2分钟

这个问题是这样产生的,一个比我还白的朋友,对时间的处理不太熟悉,然后我帮他写了一个函数,百度了一个判断,结果发现2022-3-31这种类型的字符串可以比较大小
需求是这样的:
写一个函数,传入一个1-12的数字或字符串,算出来入学的年份,比如今年是2022年,传入6,就是上了六年学,今年没到下学期,所以就2022-6 = 2016年入的学,今年过了8.15就是上学期,传入6的话入学,其实是学年是不到6年的,所以需要2022-6+1,我是这样写得哈,我也是小白,别笑话我

let str = 6
function FormatDate(strTime) {
  var date = new Date(strTime);
  return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
}
function getEntranceData(year) {
  var today = new Date();
  var today_time = FormatDate(today);
  if (today_time > today.getFullYear()+'-8-16') {
    console.log(today.getFullYear() - year * 1 + 1);
  } else {
    console.log(today.getFullYear() - year * 1);
  }
}
getEntranceData(str)

判断这一句是我百度出来的,我测试了还真能返回正确的true,false..
我反手就打开百度look了一番,好像悟了
根据之前学习汉字比较大小的原理,有两个词语,一个小白,一个发财,他会先比较的charCode的大小,比如的charCode是1234 的是2345,发大于小
所以

let a = '小白'  //小 charCode 1234   白  5678
let b = '发财'  //发 2345     财  6789
console.log(a>b)  //false
//他会先比较第一个字

let c = '小财'
console.log(a>c)  // true
//因为第一个字的charCode是一样的,所以会再去比较第二个字的charCode

带着学到的东西回到最初的问题,为啥可以比较好像也就透了....

第一次写这么多字,我是一个腼腆的人,欢迎大佬提意见,ღ( ´・ᴗ・` )比心