[英]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'
完全困惑為什么看起來相同但比較失敗的日期。
他們不一樣。 您可以通過檢查其類型進行測試
type(d1)
<class 'datetime.date'>
type(d2)
<class 'str'>
由於日期時間對象具有返回字符串的__repr__
方法,因此打印d1會給您相同的字符串。
因為其中一個是字符串,另一個是日期格式,並且日期格式和字符串不能與value相同。
這里的問題是您正在比較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
因為python是一種強類型語言。 您正在將字符串(d2)與日期對象(d1)比較。 這就是為什么它們不相等的原因。
您可以將d1轉換為date d1 = datetime.date(2019, 4, 30)
。 這樣d2和d1將相等。
你應該做:
今天= str(datetime.date.today())
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'
為了比較它們,請確保它們都是相同的類型,然后將這些值進行比較,例如,由於兩個datetime字符串的求值結果都相同,因此下面的返回True
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.