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
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' |
使用
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,则提取小时数部分作为整数,并替换为
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) ) |
产量
请参阅此处的说明和实时输出
使用λ如果你喜欢一句话,请在下面的
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)) |