素材牛VIP会员
JavaScript时间比较
 西***千  分类:JavaScript  人气:966  回帖:9  发布于6年前 收藏

yyyy-mm-dd格式的时间可以直接进行比较吗?('2017-12-10' > '2017-09-10')

 标签:javascript

讨论这个帖子(9)垃圾回帖将一律封号处理……

Lv4 码徒
ki***xx JS工程师 6年前#1
字符串 比较是比较键盘的unicode值  也就是charCode  它比较是通过每个字符进行比较 而不是针对整体,
按你需求应该是比较事件,所以比较结果基本为错误的


你应该转换为时间戳 或者对应去比较它们年月日的值 来进行时间的比较
Lv5 码农
ga***et 移动开发工程师 6年前#2

先把两个时间转成时间戳,比较时间戳

Lv4 码徒
小***学 软件测试工程师 6年前#3

不能比较,你这个字符串且里面带-,有一种是可以就是YYMMDD:20170220 20170201这种可以,你转换成毫秒之后比较吧。就是这样的

new Date('2017-09-10').valueOf() 得到 1505001600000
new Date('2017-12-10').valueOf() 得到 1512864000000
Lv7 码师
亡***师 JS工程师 6年前#4

如果都是规范格式,可以直接比较

Lv4 码徒
be***ar 产品经理 6年前#5

你这是在比较两个字符串呀。

要么,实例化为Date对象,去比较时间戳;要么,分别分离出年月日,然后挨个比较数字

Lv3 码奴
Jo***91 CEO 6年前#6

不能,必须时间戳

Lv5 码农
马***1 技术总监 6年前#7

最好不要这样比较,('2017-12-10' > '2017-09-10')这个是没问题的,可一旦出现日期格式变成这样 ('2017-02-02' > '2017-1-11'),你就会发现结果不符合预期了,因为字符串的比较是从左到右一位一位比较的,2017-02的0与2017-1的1比较结果就会错误,所以严谨做法还是应该转成时间戳。

Lv3 码奴
18***30 Linux系统工程师 6年前#8

直接比较就是字符串比较, 从开始依次对比每个字符

'2017-12-10' > '2017-09-10'  
'2017-12-10' < '2017-9-10'  
'2017-12-30' > '2017-12-09'
'2017-9-30' < '2017-9-9'
Lv1 新人
qq***99 职业无 2年前#9
不能,必须时间戳
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取