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 的时间库,但无法提出任何解决方案。
使用 strptime
创建日期时间对象后,您调用 strftime
并将所需格式作为字符串传递,请参阅 docs:
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)你浏览了时间文档,但为什么使用 "astonishing" & "cryptic" 代码,简单的代码就可以完成工作完成
只需将小时部分提取为 int & 如果它大于 12
则将其替换为 hrs-12
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) )
输出
查看说明和实时输出 here
使用 Lambda
如果您喜欢其中一款衬垫,请查看下方f()
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))
观看直播 ideOne use Python datetime
,
>>> 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'
诀窍是将您的输入日期字符串转换为 Python 日期时间对象,然后将其转换回日期字符串
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
#Return a string representing the date
dateTimeString = datetime.datetime.strftime(dateTimeObject, '%m/%d/%Y %I:%M:%S %p')
print dateTimeString
输出: 12/20/2014 03:25:05 下午
我有一个包含时间戳的字符串,格式为
(DD/MM/YYYY HH:MM:SS AM/PM), e.g."12/20/2014 15:25:05 pm"
。 这里的时间是 24 小时格式。
我需要转换成相同的格式,但时间格式为 12 小时制。
我正在使用 python 2.6 版。
我浏览了 python 的时间库,但无法提出任何解决方案。
使用 strptime
创建日期时间对象后,您调用 strftime
并将所需格式作为字符串传递,请参阅 docs:
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)你浏览了时间文档,但为什么使用 "astonishing" & "cryptic" 代码,简单的代码就可以完成工作完成
只需将小时部分提取为 int & 如果它大于 12
则将其替换为hrs-12
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) )
输出
查看说明和实时输出 here
使用 Lambda
如果您喜欢其中一款衬垫,请查看下方f()
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))
观看直播 ideOne use Python datetime
,
>>> 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'
诀窍是将您的输入日期字符串转换为 Python 日期时间对象,然后将其转换回日期字符串
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
#Return a string representing the date
dateTimeString = datetime.datetime.strftime(dateTimeObject, '%m/%d/%Y %I:%M:%S %p')
print dateTimeString
输出: 12/20/2014 03:25:05 下午