与此处提出的其他问题一样,我希望对时间格式进行简单的转换。我找到了如何在 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 .
