【问题标题】:How to calculate the difference in days between two dates in Python using the time module?如何使用时间模块计算 Python 中两个日期之间的天数差?
【发布时间】:2020-09-01 16:52:30
【问题描述】:

当我通过像 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)

【问题讨论】:

  • 你应该得到这两个日期之间的秒数。我不明白你怎么可能得到 2 作为结果。如果您想要天数差异,请将结果除以一天中的秒数。
  • 它被减去日期到日期,月到月,年到年是 y

标签: python date time


【解决方案1】:

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

使用datetime 模块中的date 类可能是一个更好的主意:

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

【讨论】:

  • 通过使用日期很容易,我只是在寻找使用时间模块。谢谢你的回答
【解决方案2】:

您可以使用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 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    相关资源
    最近更新 更多