You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 04:06:06