如何将JSON中的Datetime对象转换为Python对象及解决时间戳转Datetime失败问题
解决JSON时间戳转Python Datetime的问题
嘿,我来帮你搞定这个时间戳转换的坑!你遇到的问题根源其实很简单——拿到的created_at值1520369492984是毫秒级的Unix时间戳(从1970-01-01 UTC开始累计的毫秒数),而默认情况下Python原生datetime和pd.to_datetime都是处理秒级时间戳的,直接转自然会失败。下面给你详细的解决方法和两种转换方式的对比:
一、原生Python转换方法
用datetime模块直接处理,只需要先把毫秒转成秒(除以1000):
import datetime # 从JSON拿到的毫秒级时间戳 timestamp = 1520369492984 # 转换为本地时区的datetime对象 local_dt = datetime.datetime.fromtimestamp(timestamp / 1000.0) print(local_dt) # 输出示例:2018-03-07 15:31:32.984000 # 如果需要UTC时区的datetime对象 utc_dt = datetime.datetime.utcfromtimestamp(timestamp / 1000.0) print(utc_dt) # 输出示例:2018-03-07 07:31:32.984000
二、Pandas转换方法
你之前用pd.to_datetime失败,是因为没指定时间戳的单位。只需要加上unit='ms'参数,就能直接识别毫秒级时间戳:
import pandas as pd timestamp = 1520369492984 # 转换为Pandas的Timestamp对象 pd_timestamp = pd.to_datetime(timestamp, unit='ms') print(pd_timestamp) # 输出示例:2018-03-07 07:31:32.984000+00:00 # 如果需要转成Python原生的datetime对象 native_dt = pd_timestamp.to_pydatetime() print(native_dt) # 输出示例:2018-03-07 07:31:32.984000
三、两种转换方式对比
- 原生Python:无需额外依赖,适合单个时间戳的简单转换,能灵活控制时区和输出格式,代码轻量化。
- Pandas:适合批量处理(比如DataFrame整列的时间戳转换),自带时区支持,处理大数据量时效率更高,还能直接和Pandas的数据分析流程衔接。
内容的提问来源于stack exchange,提问作者Gingerbread
相关产品推荐
相关产品推荐

