将YYYYMMDD / HHMMSS格式的日期/时间转换为Python日期时间

时间:2010-03-04 14:33:26

标签: python datetime

我有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]))

鉴于输入格式无法改变,我是否应该创建一个更简洁的日期时间对象实例?

4 个答案:

答案 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) )