如何在Python中将带z的Unix时间戳转换为日期时间

1 投票
2 回答
2583 浏览
提问于 2025-04-18 11:09

我想知道怎么把这个时间戳 '20141031131429Z' 转换成 2014年10月31日,在Python中该怎么做。

>>>datetime.datetime.strptime( "20141031131429Z", "%Y%m%d%H%M%S%Z" )

上面的代码给我报了一个错误,错误信息如下:

ValueError: time data '20141031131429Z' does not match format '%Y%m%d%H%M%S%Z'

2 个回答

0

这不是一个Unix时间戳(Unix时间戳是用%s在strftime/strptime中解析的)——它看起来像是iCalendar格式#2(RFC 2445)。像iCalendar这样的模块可以帮助你解析这个格式,而不需要硬编码去指定使用的是哪种格式。

一旦你有了一个日期时间对象,就可以用它来获取任何其他格式:

>>> dt=datetime.datetime.strptime( "20141031131429Z", "%Y%m%d%H%M%SZ" )
>>> dt.strftime('%d %B %Y')
'31 October 2014'
>>> dt.strftime('%x')
'10/31/14'
2

Z 前面的 % 去掉:

d = datetime.datetime.strptime("20141031131429Z", "%Y%m%d%H%M%SZ" )
print(d.strftime("%d %B %Y"))

输出结果:

31 October 2014

设置 strftime() 和 strptime() 的文档说明

撰写回答