Python中如何将API返回的时间戳转换为可读日期?
解决API返回的
/Date(timestamp)/格式转可读日期问题 这种/Date(1680652800000)/格式是ASP.NET Web API早期常用的JSON日期序列化格式,核心是括号里的毫秒级时间戳,解决思路分两步:提取时间戳,再转成可读日期。
1. 提取毫秒级时间戳
不管用什么语言,第一步都是把括号里的数字提取出来,常用两种方法:
- 正则匹配:用
/\/Date\((\d+)\)\//这类正则表达式捕获括号内的数字 - 字符串截取:找到
(和)的位置,直接截取中间的子串
2. 各语言转换示例
JavaScript
// 原始日期字符串 const dateStr = "/Date(1680652800000)/"; // 提取时间戳 const timestamp = parseInt(dateStr.match(/\/Date\((\d+)\)\//)[1], 10); // 转成系统默认格式的可读日期 const readableDate = new Date(timestamp).toLocaleString(); // 示例输出:"2023/4/5 00:00:00" // 自定义格式(ES6+) const formattedDate = new Intl.DateTimeFormat('zh-CN', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }).format(new Date(timestamp));
Python
import datetime date_str = "/Date(1680652800000)/" # 提取时间戳并转成秒级(Python默认处理秒级时间戳) timestamp = int(date_str.split('(')[1].split(')')[0]) / 1000 # 转成本地时区可读日期 readable_date = datetime.datetime.fromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S") # 转成UTC时区日期 utc_date = datetime.datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S")
Java(Java 8+)
import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class DateConverter { public static void main(String[] args) { String dateStr = "/Date(1680652800000)/"; // 提取时间戳 long timestamp = Long.parseLong(dateStr.substring(dateStr.indexOf('(')+1, dateStr.indexOf(')'))); // 转成本地时区的可读日期 String readableDate = Instant.ofEpochMilli(timestamp) .atZone(ZoneId.systemDefault()) .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); System.out.println(readableDate); } }
注意事项
- 括号内的数字是毫秒级时间戳,部分语言(如Python)默认处理秒级时间戳,需要除以1000转换
- 注意时区差异:不同语言默认时区可能不同,如需统一UTC时间,要显式指定时区
内容的提问来源于stack exchange,提问作者BlockChain Learner
相关产品推荐
相关产品推荐

