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

如何从API返回的ISO标准日期时间字符串中提取小时部分

提取ISO 8601格式时间中小时部分的方案

你给出的2021-09-05T18:16:47.790601+02:00是标准的ISO 8601带时区偏移的时间格式,提取小时可以根据需求选择两种思路:提取原时区的字面小时,或者提取转换为UTC时区后的小时。

通用字符串截取法(不依赖编程语言)

该格式固定为日期部分T时间部分±时区偏移,T字符后前两位就是原时区的小时数值:

  • 以示例字符串为例,定位T的索引为10,向后截取2位即可得到18。

各编程语言内置时间库处理方案

Python

from datetime import datetime, timezone

time_str = "2021-09-05T18:16:47.790601+02:00"
dt = datetime.fromisoformat(time_str)

# 提取原时区(东二区)的小时
local_hour = dt.hour
print(local_hour) # 输出 18

# 提取转换为UTC时区后的小时
utc_hour = dt.astimezone(timezone.utc).hour
print(utc_hour) # 输出 16

JavaScript

const timeStr = "2021-09-05T18:16:47.790601+02:00";
const date = new Date(timeStr);

// 提取原时区的字面小时(字符串截取)
const localHour = timeStr.split('T')[1].slice(0,2);
console.log(localHour) // 输出 '18'

// 提取UTC时区的小时
const utcHour = date.getUTCHours();
console.log(utcHour) // 输出 16

Java

import java.time.OffsetDateTime;

public class TimeTest {
    public static void main(String[] args) {
        String timeStr = "2021-09-05T18:16:47.790601+02:00";
        OffsetDateTime dt = OffsetDateTime.parse(timeStr);
        
        // 原时区小时
        int localHour = dt.getHour();
        System.out.println(localHour); // 输出18
        
        // UTC时区小时
        int utcHour = dt.atZoneSameInstant(java.time.ZoneOffset.UTC).getHour();
        System.out.println(utcHour); // 输出16
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:48:03