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

Python3日期时间格式化:如何将API返回的特殊格式转为指定格式

解决ISO 8601日期格式转MM-DD-YYYY HH:MM:SS的问题

嘿,你遇到的这个YYYY-MM-DDTHH:MM:SSZ格式是ISO 8601标准的UTC日期时间格式,其中T是日期与时间的分隔符,Z代表UTC时区(零时区)。下面给你几种常用编程语言的可靠解决方案,帮你转换成目标格式:

1. Python 实现

用Python内置的datetime模块就能轻松处理,既保证时间解析的准确性,又能灵活格式化:

from datetime import datetime

# 你的原始ISO格式字符串
iso_datetime = "2018-04-27T23:59:18Z"
# 解析ISO格式:把Z替换为+00:00,适配fromisoformat的时区格式要求
dt_object = datetime.fromisoformat(iso_datetime.replace('Z', '+00:00'))
# 格式化为MM-DD-YYYY HH:MM:SS
target_format = dt_object.strftime("%m-%d-%Y %H:%M:%S")

print(target_format)  # 输出:04-27-2018 23:59:18

2. JavaScript 实现

利用原生Date对象解析UTC时间,再提取各部分拼接成目标格式:

const isoDatetime = "2018-04-27T23:59:18Z";
const date = new Date(isoDatetime);

// 注意:JavaScript的月份是从0开始的,所以要+1
const month = String(date.getUTCMonth() + 1).padStart(2, '0');
const day = String(date.getUTCDate()).padStart(2, '0');
const year = date.getUTCFullYear();
const hours = String(date.getUTCHours()).padStart(2, '0');
const minutes = String(date.getUTCMinutes()).padStart(2, '0');
const seconds = String(date.getUTCSeconds()).padStart(2, '0');

const targetFormat = `${month}-${day}-${year} ${hours}:${minutes}:${seconds}`;
console.log(targetFormat); // 输出:04-27-2018 23:59:18

3. Java 实现

使用Java 8及以上版本推荐的java.time标准库,解析和格式化一步到位:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeConverter {
    public static void main(String[] args) {
        String isoDatetime = "2018-04-27T23:59:18Z";
        // 直接解析带Z的ISO格式
        OffsetDateTime utcDateTime = OffsetDateTime.parse(isoDatetime);
        // 定义目标格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss");
        String targetFormat = utcDateTime.format(formatter);

        System.out.println(targetFormat); // 输出:04-27-2018 23:59:18
    }
}

小提示

如果只是临时处理固定格式的字符串,也可以用简单的字符串替换+重组,但这种方法不推荐(无法处理时区、日期合法性校验,比如带毫秒的ISO格式就会出错):

iso_datetime = "2018-04-27T23:59:18Z"
# 先替换T和Z
temp_str = iso_datetime.replace('T', ' ').replace('Z', '')
# 拆分日期和时间部分
date_part, time_part = temp_str.split(' ')
# 重组日期为MM-DD-YYYY格式
year, month, day = date_part.split('-')
new_date = f"{month}-{day}-{year}"
# 拼接最终结果
target_format = f"{new_date} {time_part}"

内容的提问来源于stack exchange,提问作者Brandon Atkinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:34:01