如何将JSON中不带T、Z的日期转换为T-Z格式的标准日期
带时区偏移的日期字符串转ISO 8601(T-Z格式)Date类型方案
你提到的T-Z格式是ISO 8601标准的UTC时间表示格式,形如 2021-09-21T12:37:29.590Z,其中T分隔日期和时间,Z表示UTC零时区。以下是不同开发场景下的常用实现方案:
JavaScript 实现
JS原生Date对象可直接解析你给出的带时区偏移的日期字符串,是处理JSON数据最常用的方案:
const inputDateStr = '2021-09-21 15:37:29.590 +03:00'; // 老旧浏览器兼容性处理:先把空格替换为T再解析 const dateObj = new Date(inputDateStr.replace(' ', 'T')); // 输出T-Z格式字符串 const tzFormatStr = dateObj.toISOString(); console.log(tzFormatStr); // 输出结果:2021-09-21T12:37:29.590Z
得到的dateObj本身就是JS标准Date类型,可直接用于后续日期运算、存储等操作。
Python 实现
Python 3.7+ 可通过datetime模块直接处理:
from datetime import datetime input_date_str = "2021-09-21 15:37:29.590 +03:00" # 解析带时区的字符串 date_obj = datetime.fromisoformat(input_date_str) # 转换为UTC时区后输出T-Z格式 tz_format_str = date_obj.astimezone(datetime.timezone.utc).isoformat().replace("+00:00", "Z") print(tz_format_str) # 输出结果:2021-09-21T12:37:29.590000Z
如果需要保留毫秒精度,自行截断后三位小数即可。
Java 实现
Java 8+ 可通过java.time包处理,无需引入第三方依赖:
import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; public class DateConvert { public static void main(String[] args) { String inputDateStr = "2021-09-21 15:37:29.590 +03:00"; DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS XXX"); ZonedDateTime zonedDateTime = ZonedDateTime.parse(inputDateStr, inputFormatter); // 转换为UTC后输出T-Z格式 String tzFormatStr = zonedDateTime.format(DateTimeFormatter.ISO_INSTANT); System.out.println(tzFormatStr); // 输出结果:2021-09-21T12:37:29.590Z } }
内容的提问来源于stack exchange,提问作者JAN
相关产品推荐
相关产品推荐

