我使用的是Python3.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
请帮我解决这个问题。你知道吗
这个python2/python3代码是Martijn和Tagc答案的组合。你知道吗
输出
正如Tagc所说,如果这个代码运行时日期可能会改变,那么您需要在
for
循环中移动today = datetime.today()
。你知道吗基本上是一样的,没有函数:
date_cand_time
不是整数,它是一个带有整数的元组。你不能把它传递给datetime.date()
对象。您必须将前3个元素作为单独的参数传入:*
告诉Python将lst_reg_date_cand_time[:3]
表达式的值作为单独的参数应用。你知道吗但是,我不会绕道
time.strptime()
;只需将3个字符串映射为整数并直接传递它们:datetime.date()
的参数毕竟是year
、month
和day
,它们的顺序与字符串的顺序相同。你知道吗如果必须使用} 并从中提取
strptime
,则使用^{date
对象:演示:
这个代码似乎有效。请注意,我使用
datetime.strptime
而不是time.strptime
,以防出现任何差异:输出
警告
我将
today
的计算移到for循环之外,以获得较小的性能优势,但是如果您让此代码运行到午夜之后,这将导致代码中断。:)相关问题 更多 >
编程相关推荐