是否有任何一种将日期时间转换为简单元组的线性方法
>>> from datetime import datetime, timedelta
>>> new_date = datetime. today() + timedelta(12)
>>> new_date
datetime.datetime(2020, 5, 26, 13, 31, 36, 838650)
如何将new_date转换为元组类型。
这是我尝试过的
tuple(new_date)
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
tuple(new_date)
TypeError: 'datetime.datetime' object is not iterable
预期输出:
>> (2020, 5, 26, 13, 31, 36, 838650)
请使用timetuple()
或utctimetuple()
进行转换:
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2020, 5, 14, 17, 18, 39, 958430)
>>> dt.timetuple()
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=14, tm_hour=17, tm_min=18, tm_sec=39, tm_wday=3, tm_yday=135, tm_isdst=-1)
>>>
您可以使用timetuple
。
>>> new_date.timetuple()
time.struct_time(tm_year=2020, tm_mon=5, tm_mday=26, tm_hour=11, tm_min=15, tm_sec=30, tm_wday=1, tm_yday=147, tm_isdst=-1)
>>> tuple(new_date.timetuple())
(2020, 5, 26, 11, 15, 30, 1, 147, -1)
您实际上并不需要将其转换为元组,以上只是为了说明这一点。您可以在使用普通元组的地方使用它。
如果要“自定义”输出(例如,包括微秒),则可以使用运算符模块中的attrgetter来获取datetime对象的属性:
from datetime import datetime
from operator import attrgetter
attrs = ('year', 'month', 'day', 'hour', 'minute', 'second', 'microsecond')
d = datetime.now()
# datetime.datetime(2020, 5, 14, 12, 49, 35, 33067)
d_tuple = attrgetter(*attrs)(d)
# (2020, 5, 14, 12, 49, 35, 33067)