我有YYYYMMDD格式的日期和HHMMSS格式的时间作为列表中第4和第5个元素的字符串。即:
data[4] = '20100304'
data[5] = '082835'
我正在创建一个datetime实例(在名为generate的字段中),如下所示:
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]))
鉴于输入格式无法改变,我是否应该创建一个更简洁的日期时间对象实例?
答案 0 :(得分:42)
无需导入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
的{{3}}。
答案 1 :(得分:4)
您可以查看time.strptime。
import time
time.strptime('20100304 082835', '%Y%m%d %H%M%S')
以上假定为24小时制(%H
)。如果使用12小时制,请使用%I
。
有关可用格式指令的完整列表,请查看time.strftime
的文档答案 2 :(得分:0)
import time, datetime
x = time.strptime("30 Nov 00", "%d %b %y")
datetime.datetime(x)
您还可以提供自己的日期字符串格式,此处为doc。
答案 3 :(得分:0)
您可以使用生成器(相当于地图)清理现有代码:
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) )