将YYYYMMDD/HHMMSS格式的日期时间转换为Python datetime
我有一个日期,格式是YYYYMMDD,还有一个时间,格式是HHMMSS,这两个都是字符串,分别在一个列表的第4和第5个位置。比如:
data[4] = '20100304'
data[5] = '082835'
我正在创建一个datetime的实例(在一个叫做generates的字段里),是这样做的:
generatedtime = datetime.datetime(int(data[4][:4]),int(data[4][4:6]),int(data[4][6:]),int(data[5][:2]),int(data[5][2:4]),int(data[5][4:6]))
考虑到输入的格式不能改变,有没有更简单的方法来创建我的datetime对象呢?
3 个回答
0
你可以用一个生成器来稍微整理一下你现有的代码,这个生成器的作用类似于一个映射(map):
generatedtime = datetime.datetime( *(int(x) for x in
(data[4][:4], data[4][4:6], data[4][6:], data[5][:2], data[5][2:4],data[5][4:6])
) )
或者,如果你想得特别灵活的话,还可以让日期时间的语句变得更简洁(虽然这样会多出一行看起来有点奇怪的代码):
slices = ( (4, slice(4)), (4, slice(4,6) ), (4, slice(6,None)), (5, slice(2) ), (5, slice(2,4) ), (5, slice(4,6)) )
generatedtime = datetime.datetime( *(int(data[i][s]) for (i,s) in slices) )
8
你可以看看 time.strptime 这个文档。
import time
time.strptime('20100304 082835', '%Y%m%d %H%M%S')
上面的内容是基于24小时制的时钟(%H
)。如果你使用的是12小时制的时钟,就要用 %I
。
想要查看所有可用的格式指令,可以去看看 time.strftime 的文档。
58
不需要导入 time
模块;datetime.datetime.strptime
自己就能完成这个任务。
import datetime
dt=datetime.datetime.strptime(data[4]+data[5],'%Y%m%d%H%M%S')
print(dt)
# 2010-03-04 08:28:35
关于格式代码的信息(比如 %Y%m%d%H%M%S
),可以查看 这里的文档,了解 strftime
的用法。