gpt4 book ai didi

python - 列出时间格式的元素并计算与今天的时间差异

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:11 25 4
gpt4 key购买 nike

我使用的是 python 3.6,在计算日期时遇到了一些问题。

我有一个由如下日期元素组成的列表:

dates = [['2017','01','15'], ['2017','01','14'], ['2017','01','13'],...]

我想把它变成时间格式并计算从今天开始的天数。

如何修复我的代码?

下面是我的代码:

dates = [['2017', '01', '15'], ['2017', '01', '14'], ['2017', '01', '13']]

for date in dates:
date_cand = "-".join(date)
date_cand_time = time.strptime(date_cand,"%Y-%m-%d")
(datetime.date.today() - datetime.date(date_cand_time)).days

我现在收到此错误消息:

TypeError: an integer is required (got type time.struct_time)

我想要的结果是:

4
5
6

请帮我解决这个问题。

最佳答案

date_cand_time 不是一个整数,它是一个包含整数的元组。您不能只将其传递给 datetime.date() 对象。您必须将前 3 个元素作为单独的参数传递:

(datetime.date.today() - datetime.date(*date_cand_time[:3])).days

* 告诉 Python 应用 lst_reg_date_cand_time[:3] 表达式的值作为单独的参数。

但是,我不会通过 time.strptime() 绕路;只需将 3 个字符串映射为整数并直接将它们传递:

date_cand = datetime.date(*map(int, date))
(datetime.date.today() - date_cand).days

毕竟 datetime.date() 的参数是 yearmonthday,按照与您的琴弦相同的顺序。

如果您必须使用strptime,那么使用datetime.datetime.strptime()并从中提取 date 对象:

date_cand = datetime.datetime.strptime("-".join(date), "%Y-%m-%d")
(datetime.date.today() - date_cand.date()).days

演示:

>>> import datetime
>>> dates = [['2017','01','15'], ['2017','01','14'], ['2017','01','13']]
>>> for date in dates:
... # using map, produces a date
... date_cand = datetime.date(*map(int, date))
... print(date_cand, (datetime.date.today() - date_cand).days)
... # using datetime.datetime.strptime, produces a datetime
... date_cand = datetime.datetime.strptime("-".join(date), "%Y-%m-%d")
... print(date_cand, (datetime.date.today() - date_cand.date()).days)
...
2017-01-15 4
2017-01-15 00:00:00 4
2017-01-14 5
2017-01-14 00:00:00 5
2017-01-13 6
2017-01-13 00:00:00 6

关于python - 列出时间格式的元素并计算与今天的时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41736855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com