[英]How to calculate the difference in days between two dates in Python using the time module?
当我传递像 15-05-2020 和 16-06-2020 这样的日期时,它给出 2,但我想要 32 或 33
date1 = v_parking_in_date = input('Please Enter the Parking Start Date in dd-mm-yyyy format :')
date2 = v_parking_out_date = input('Please Enter the Parking Completion Date in dd-mm-yyyy format :')
date_1 = time.mktime(time.strptime(date1, "%d-%m-%Y"))
date_2 = time.mktime(time.strptime(date2, "%d-%m-%Y"))
d = (date_2 - date_1)
您可以使用datetime模块来计算两个日期之间的差值:
import datetime as dt
import time
date1 = input('Please Enter the Parking Start Date in dd-mm-yyyy format :')
date2 = input('Please Enter the Parking Completion Date in dd-mm-yyyy format :')
date_1 = dt.date.fromtimestamp(time.mktime(time.strptime(date1, "%d-%m-%Y")))
date_2 = dt.date.fromtimestamp(time.mktime(time.strptime(date2, "%d-%m-%Y")))
d = date_2 - date_1 # datetime.timedelta(days=32)
首先,通过使用time.mktime
,您将获得自日期纪元以来的秒数。 然后通过使用datetime.date.fromtimestamp
,您可以从该值(以秒为单位)创建date
object。
如果可能,不要将时间模块用于此任务,因为您不需要考虑小时、分钟或秒。
from datetime import date
def difference_in_days(dmy_date_1, dmy_date_2):
# Converts the given dates to yyyy-mm-dd format (ISO 8601),
# so that date.fromisoformat() can work with them.
ymd_date_1 = "-".join(reversed(dmy_date_1.split("-")))
ymd_date_2 = "-".join(reversed(dmy_date_2.split("-")))
# Creates actual date objects from our string values.
date_1 = date.fromisoformat(ymd_date_1)
date_2 = date.fromisoformat(ymd_date_2)
# Subtracting a date object from another gives a timedelta object,
# which has a useful .days attribute.
return abs(date_1 - date_2).days
测试:
>>> difference_in_days("15-05-2020", "16-06-2020")
32
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.