之前有做过根据日期筛选数据的功能,然后自然就要比较日期大小。
那么问题来了, '20180320'>'20180310' 以及'2018/03/20'>'2018/03/10'这种写法对不对呢?比较结果是正确的,但是我不清楚这样写有没有隐患,各位大佬能解释下吗?我没查到相关资料。
之前有做过根据日期筛选数据的功能,然后自然就要比较日期大小。
那么问题来了, '20180320'>'20180310' 以及'2018/03/20'>'2018/03/10'这种写法对不对呢?比较结果是正确的,但是我不清楚这样写有没有隐患,各位大佬能解释下吗?我没查到相关资料。
>>> print('2020-8-11' < '2020-8-7')
True
>>> print('2020-08-11' < '2020-08-07')
False
年月日顺序的标准日期可对比
1 回答9.7k 阅读✓ 已解决
2 回答5.4k 阅读✓ 已解决
2 回答3.7k 阅读✓ 已解决
3 回答4.5k 阅读
3 回答1.5k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
4 回答1.7k 阅读✓ 已解决
日期字符串可以写成
YYYY/mm/dd
、YYYY-mm-dd
、YYYYmmdd
等多种格式,当两个格式相同的日期字符串之间进行比较时,对应位上的分隔符是一定相同的,因此可以排除掉,最终等价于两个YYYYmmdd
格式的字符串之间进行比较。先看年份的
YYYY
,它是一个四位数,根据基本的数学知识可以知道如果两个位数相同的数的前n位相同,第n+1位数1大于数2,那么数1一定大于数2。而字符串比较大小的逻辑是从左往右依次比较字符的ASCII值,刚好和数字比较大小的逻辑是相同的,因此如果字符串YYYY
>Y'Y'Y'Y'
,那么数字YYYY
也一定>Y'Y'Y'Y'
。同理也适用于月份的mm
和日期的dd
。由于权重年>月>日,可以进一步把年月日拼成一个8位数YYYYmmdd
,然后根据同样的原理得出如果字符串YYYYmmdd
>Y'Y'Y'Ym'm'd'd'
,那么数字YYYYmmdd
也一定>Y'Y'Y'Y'm'm'd'd'
,日期前者也必定大于后者。这里有个前提是日期字符串的格式必须是年在前,月在中,日在后,如果格式类似于
mm/dd/YYYY
那么很显然就不能直接比较了。