簡體   English   中英

為什么在打印時比較這兩個日期在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'

完全困惑為什么看起來相同但比較失敗的日期。

他們不一樣。 您可以通過檢查其類型進行測試

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())

d1d2都是不同類型的變量,因此比較失敗,如下所示

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM