Skip to main content
 首页 » 编程设计

python之将 12 小时日期/时间字符串转换为 24 小时日期时间

2025年05月04日24dflying

与此处提出的其他问题一样,我希望对时间格式进行简单的转换。我找到了如何在 Perl 中执行此操作的答案,但在 Python 中找不到。

我有这样一个字符串:

on Jun 03, 02010 at 10:22PM 

我想将它转换成这样的日期时间对象:

Thu, 03 Jun 2010 22:22:00 -0000 

我已经像这样分割了我的输入:

date = str(comment.div.contents[5].contents) 
month = date[6:9] 
day   = date[10:12] 
year  = date[15:19] 
time  = date[23:30] 

这为我设置了一些很好的变量,我可以将其返回到日期时间,但在此之前,我必须转换时间。上例中的time是否应该分开计算hh和{AM|PM}?

请您参考如下方法:

使用 dateutil :

import datetime as dt 
import dateutil.parser as dparser 
 
date_str='on Jun 03, 02010 at 10:22PM' 
date=dparser.parse(date_str) 
print(date) 
# 2010-06-03 22:22:00 
print(date.strftime('%a, %d %b %Y %H:%M:%S')) 
# Thu, 03 Jun 2010 22:22:00 

如果你能以某种方式去除讨厌的“on”并将 02010 更改为 2010,在 date_str 中,那么你可以使用 dt.datetime.strptime:

date_str='Jun 03, 2010 at 22:22PM' 
date=dt.datetime.strptime(date_str,'%b %d, %Y at %H:%M%p') 
print(date) 
# 2010-06-03 22:22:00 

或者,作为 Muhammad Alkarouri points out ,如果 date_strs 总是以 on 开头并使用以零为前缀的四位数年份,那么您可以使用

date_str='on Jun 03, 02010 at 22:22PM' 
date=dt.datetime.strptime(date_str,'on %b %d, 0%Y at %H:%M%p') 
print(date) 
# 2010-06-03 22:22:00 

Python 的 strftime 和 strptime 使用您机器的同名 C 函数。因此,请查看您本地的手册页,了解您的机器可用的格式代码。有关格式代码的一般列表(可能可用),请参阅 http://au2.php.net/strftime .