給定一個串在strftime('%b %d, %Y %I:%M %p')
如的datetime
格式:'Apr 17, 2016 02:00 AM'
與字符串的日期時間比較?
是有沒有辦法來檢查,如果這個時間已過去? 等可比較
datetime.datetime.now().strftime('%b %d, %Y %I:%M %p')
莫名其妙字符串'Apr 17, 2016 02:00 AM'
給定一個串在strftime('%b %d, %Y %I:%M %p')
如的datetime
格式:'Apr 17, 2016 02:00 AM'
與字符串的日期時間比較?
是有沒有辦法來檢查,如果這個時間已過去? 等可比較
datetime.datetime.now().strftime('%b %d, %Y %I:%M %p')
莫名其妙字符串'Apr 17, 2016 02:00 AM'
解析字符串轉換爲datetime.datetime
實例,然後比較datetime.now()
:
from datetime import datetime
dt = datetime.strptime('Apr 17, 2016 02:00 AM', '%b %d, %Y %I:%M %p')
if dt < datetime.now():
print('{} alread past'.format(dt))
你可能想使之成爲功能:
def is_past(dt_string):
return datetime.strptime(dt_string, '%b %d, %Y %I:%M %p') < datetime.now()
然後調用它像這樣:
>>> is_past('Apr 17, 2016 02:00 AM')
False
>>> is_past('Apr 01, 2016 02:00 AM')
True
沒有,字符串比較不會在這裏工作;值不根據全日期進行排序,但根據月份的月份和日期,在該月的前10天內無情地分散在整個日期中,因爲日期編號不是零填充的。如果首先列出年份,然後是零填充數字月份,日期,小時數(使用24小時制)和分鐘,然後然後您可以僅將它作爲字符串來使用,因爲這樣字典式的排序恰好符合方式日期和時間將被排序。
dt = datetime.datetime.strptime(string, '%b %d, %Y %I:%M %p')
if dt < datetime.datetime.now():
# in the past.
演示:
相反,使用datetime.datetime.strptime()
class method解析你的字符串爲datetime
對象
>>> import datetime
>>> string = 'Apr 17, 2016 02:00 AM'
>>> dt = datetime.datetime.strptime(string, '%b %d, %Y %I:%M %p')
>>> dt
datetime.datetime(2016, 4, 17, 2, 0)
>>> dt < datetime.datetime.now()
False
如果你要使用ISO8601 combined date-time format您的日期格式,那麼你就會有一個格式,只能按字符串排序:
>>> datetime.datetime.now().isoformat()
'2016-04-15T09:55:09.907130'