当前位置:  开发笔记 > 编程语言 > 正文

将元素列出时间格式并计算今天的时差

如何解决《将元素列出时间格式并计算今天的时差》经验,为你挑选了1个好方法。

我正在使用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

请帮我解决这个问题.



1> Martijn Piet..:

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()是,毕竟year,month并且day,以相同的顺序你有你的字符串.

如果必须使用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

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有