如何将API返回的Unix时间戳转换为Python可读格式?
把Unix时间戳转换为易读的Python DateTime格式
嘿,这问题我之前也碰到过!你看到的time_gmt是Unix时间戳——简单说就是从1970年1月1日UTC时间00:00:00开始,到目标时间总共经过的秒数。既然你熟悉Python的DateTime对象,那转换起来超简单,给你几个实用的方法:
基础转换(UTC时间)
Python内置的datetime模块直接支持解析这种时间戳,用utcfromtimestamp()可以得到UTC时区的DateTime对象:
import datetime # 从API获取的时间戳 api_timestamp = 1213329060 # 转换为UTC DateTime对象 utc_dt = datetime.datetime.utcfromtimestamp(api_timestamp) print(utc_dt) # 输出结果:2008-06-13 03:51:00
转换为本地时间
如果需要转换成你所在时区的时间,用fromtimestamp()就行,它会自动适配你的系统时区:
local_dt = datetime.datetime.fromtimestamp(api_timestamp) print(local_dt) # 举个例子,如果你在北京时间时区,输出会是:2008-06-13 11:51:00
自定义格式化输出
要是想得到更友好的字符串格式(比如带时区标识),用strftime()方法自定义格式就行:
# 格式化为"年-月-日 时:分:秒 GMT"的形式 formatted_gmt = utc_dt.strftime("%Y-%m-%d %H:%M:%S GMT") print(formatted_gmt) # 输出:2008-06-13 03:51:00 GMT
进阶:带时区的规范处理(Python 3.9+)
如果你用的是Python 3.9及以上版本,推荐用zoneinfo模块来做时区转换,更规范可靠:
from zoneinfo import ZoneInfo # 直接生成带UTC时区的DateTime对象 utc_dt_with_tz = datetime.datetime.fromtimestamp(api_timestamp, tz=ZoneInfo("UTC")) # 转换为北京时间(Asia/Shanghai) beijing_dt = utc_dt_with_tz.astimezone(ZoneInfo("Asia/Shanghai")) # 格式化输出带时区名称和偏移量的字符串 print(beijing_dt.strftime("%Y-%m-%d %H:%M:%S %Z%z")) # 输出:2008-06-13 11:51:00 CST+0800
另外提一句,API里的day_ind: 'N'应该是「Night(夜晚)」的标识,对应转换后的UTC时间是凌晨3点多,逻辑完全对得上~
内容的提问来源于stack exchange,提问作者Rishabh Agrahari
相关产品推荐
相关产品推荐

