为什么在 python 中比较这两个日期在打印时失败,它们是相同的
Why does comparing these 2 dates fail in python when printed they are the same
我正在尝试比较 python 中的 2 个日期,当我打印日期时,它们是相同的,但比较失败。
import datetime
today = datetime.date.today()
print today
print '2019-04-30'
d1 = today
d2 = '2019-04-30'
if d1 == d2:
print 'match'
else:
print 'nomatch'
完全不明白为什么日期看起来一样但比较失败。
因为python是一种强类型语言。您正在将字符串 (d2) 与日期对象 (d1) 进行比较。这就是为什么它们不相等。
您可以将 d1 隐藏到日期 d1 = datetime.date(2019, 4, 30)
。这样 d2 和 d1 就会相等。
因为其中一个是字符串,另一个是日期格式,日期格式和字符串不能与值相同。
这里的问题是您正在比较一个 datetime
对象和一个字符串。为了进行有效的比较,您应该使用 datetime.datetime.strptime
解析 d2
,然后比较:
import datetime
d2 = '2019-04-30'
d2_datetime = datetime.datetime.strptime(d2, '%Y-%m-%d')
现在,如果您检查是否相等,您会发现两个实例是相同的:
datetime.date.today() == d2_datetime.date()
# True
你应该做的:
今天 = str(datetime.date.today())
它们不一样。你可以通过检查它们的类型来测试它
type(d1)
<class 'datetime.date'>
type(d2)
<class 'str'>
打印 d1 给你相同的字符串,因为 datetime 对象有一个 __repr__
方法,returns 字符串。
d1
和d2
都是不同类型的变量,所以比较失败如下
import datetime
today = datetime.date.today()
print today
print '2019-04-30'
d1 = today
d2 = '2019-04-30'
#Both types are different, as seen below
print type(d1)
#<type 'datetime.date'>
print type(d2)
#<type 'str'>
if d1 == d2:
print 'match'
else:
print 'nomatch'
要比较它们,请确保两者的类型相同,然后比较值,例如下面的 returns True 因为两个 datetime 字符串计算为相同的 datetime 对象
import datetime
d1 = datetime.datetime.strptime('2019-04-30', '%Y-%m-%d')
d2 = datetime.datetime.strptime('04-30-2019', '%m-%d-%Y')
print(d1 == d2)
#True
我正在尝试比较 python 中的 2 个日期,当我打印日期时,它们是相同的,但比较失败。
import datetime
today = datetime.date.today()
print today
print '2019-04-30'
d1 = today
d2 = '2019-04-30'
if d1 == d2:
print 'match'
else:
print 'nomatch'
完全不明白为什么日期看起来一样但比较失败。
因为python是一种强类型语言。您正在将字符串 (d2) 与日期对象 (d1) 进行比较。这就是为什么它们不相等。
您可以将 d1 隐藏到日期 d1 = datetime.date(2019, 4, 30)
。这样 d2 和 d1 就会相等。
因为其中一个是字符串,另一个是日期格式,日期格式和字符串不能与值相同。
这里的问题是您正在比较一个 datetime
对象和一个字符串。为了进行有效的比较,您应该使用 datetime.datetime.strptime
解析 d2
,然后比较:
import datetime
d2 = '2019-04-30'
d2_datetime = datetime.datetime.strptime(d2, '%Y-%m-%d')
现在,如果您检查是否相等,您会发现两个实例是相同的:
datetime.date.today() == d2_datetime.date()
# True
你应该做的:
今天 = str(datetime.date.today())
它们不一样。你可以通过检查它们的类型来测试它
type(d1)
<class 'datetime.date'>
type(d2)
<class 'str'>
打印 d1 给你相同的字符串,因为 datetime 对象有一个 __repr__
方法,returns 字符串。
d1
和d2
都是不同类型的变量,所以比较失败如下
import datetime
today = datetime.date.today()
print today
print '2019-04-30'
d1 = today
d2 = '2019-04-30'
#Both types are different, as seen below
print type(d1)
#<type 'datetime.date'>
print type(d2)
#<type 'str'>
if d1 == d2:
print 'match'
else:
print 'nomatch'
要比较它们,请确保两者的类型相同,然后比较值,例如下面的 returns True 因为两个 datetime 字符串计算为相同的 datetime 对象
import datetime
d1 = datetime.datetime.strptime('2019-04-30', '%Y-%m-%d')
d2 = datetime.datetime.strptime('04-30-2019', '%m-%d-%Y')
print(d1 == d2)
#True