将日期时间类型转换为python中的元组

问题描述 投票:0回答:3

是否有任何一种将日期时间转换为简单元组的线性方法

>>> 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)
python datetime type-conversion tuples timedelta
3个回答
1
投票

请使用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)
>>> 

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)

您实际上并不需要将其转换为元组,以上只是为了说明这一点。您可以在使用普通元组的地方使用它。


0
投票

如果要“自定义”输出(例如,包括微秒),则可以使用运算符模块中的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)
© www.soinside.com 2019 - 2024. All rights reserved.