繁体   English   中英

如何使用时间模块计算 Python 中两个日期之间的天数差异?

[英]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。

如果可能,不要将时间模块用于此任务,因为您不需要考虑小时、分钟或秒。

使用日期时间模块中的日期class 可能是一个更好的主意:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM