python中的日期时间格式转换

Date time format conversion in python

本问题已经有最佳答案,请猛点这里访问。

我有一个包含时间戳的字符串

(DD/MM/YYYY HH:MM:SS AM/PM), e.g."12/20/2014 15:25:05 pm"

.这里的时间是24小时制。

我需要转换成同样的格式,但时间是12小时格式。

我使用的是Python 2.6版。

我已经阅读过python的时间库,但没有找到任何解决方案。


技巧是将输入的日期字符串转换为python datetime对象,然后将其转换回日期字符串

1
2
3
4
5
6
7
8
import datetime

#Input Date String
t ="12/20/2014 15:25:05 pm"

#Return a datetime corresponding to date string
dateTimeObject = datetime.datetime.strptime(t, '%m/%d/%Y %H:%M:%S %p')
print dateTimeObject

产量:2014-12-20 15:25:05

1
2
3
#Return a string representing the date
dateTimeString = datetime.datetime.strftime(dateTimeObject, '%m/%d/%Y %I:%M:%S %p')
print dateTimeString

输出:2014年12月20日下午3:25:05


查看Live Ideone使用python datetime

1
2
3
4
5
6
7
>>> from datetime import datetime as dt
>>> date_str='12/20/2014 15:25:05 pm'

>>> date_obj = dt.strptime(date_str, '%m/%d/%Y %H:%M:%S %p')

>>> dt.strftime(date_obj, '%m/%d/%Y %I:%M:%S %p')
'12/20/2014 03:25:05 PM'


使用strptime创建日期时间对象后,调用strftime并以字符串形式传递所需格式,请参阅文档:

1
2
3
4
5
6
In [162]:

t ="12/20/2014 15:25:05 pm"
dt.datetime.strftime(dt.datetime.strptime(t, '%m/%d/%Y %H:%M:%S %p'), '%m/%d/%Y %I:%M:%S %p')
Out[162]:
'12/20/2014 03:25:05 PM'

最短和最简单的解决方案--

我真的很欣赏(因为我几乎看不到手册页:p)你在阅读时间文档,但是为什么在简单的代码可以完成工作时使用"惊人的"和"神秘的"代码呢?

如果小时数大于12,则提取小时数部分作为整数,并替换为hrs-12

1
2
3
4
5
6
t ="12/20/2014 15:25:05 pm"

hrs = int( t.split()[1][:2] )

if hrs > 12:
    t = t.replace( str(hrs), str(hrs-12) )

产量

请参阅此处的说明和实时输出

使用λ

如果你喜欢一句话,请在下面的f()结账。

1
2
3
4
5
t ="12/20/2014 15:25:05 pm"

f = lambda tym: tym.replace(str(int(tym.split()[1][:2])), str(int(tym.split()[1][:2])-12)) if int(tym.split()[1][:2]) > 12 else tym

print(f(t))