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

Java中UTC时间戳转指定时区并提取各类时间字段的实现方法

Java 8+ 实现方案(基于java.time官方时间库,无需第三方依赖)

前置说明

你输入的时间串后缀 --UTC是冗余内容,第一步需要先清洗掉该后缀,得到标准的ISO 8601带偏移时间格式。

完整代码示例

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

public class TimeParseDemo {
    public static void main(String[] args) {
        // 1. 从JSON拿到的原始时间串
        String rawTimeStr = "2021-02-11T09:00:00-07:00 --UTC";
        // 2. 清洗冗余后缀,得到标准ISO格式串
        String standardTimeStr = rawTimeStr.replace(" --UTC", "");
        // 3. 解析为ZonedDateTime对象
        ZonedDateTime originalZdt = ZonedDateTime.parse(standardTimeStr, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
        
        // 4. 转换为指定时区,示例为上海时区,可替换为你需要的时区ID,比如"America/New_York"
        ZoneId targetZone = ZoneId.of("Asia/Shanghai");
        ZonedDateTime targetZdt = originalZdt.withZoneSameInstant(targetZone);
        
        // 5. 提取字段存入Map
        Map<String, Object> timeInfoMap = new HashMap<>();
        timeInfoMap.put("week", targetZdt.getDayOfWeek().toString()); // 星期,需中文可自行做枚举映射
        timeInfoMap.put("dayOfYear", targetZdt.getDayOfYear()); // 日期序号(当年第几天)
        timeInfoMap.put("dayOfMonth", targetZdt.getDayOfMonth()); // 日期(当月第几天)
        timeInfoMap.put("month", targetZdt.getMonthValue()); // 月份数字,要英文全称用getMonth().toString()
        timeInfoMap.put("year", targetZdt.getYear()); // 年份
        timeInfoMap.put("time", targetZdt.toLocalTime().toString()); // 时间,可通过DateTimeFormatter自定义格式
        timeInfoMap.put("zone", targetZdt.getZone().toString()); // 时区信息
        
        // 输出测试
        System.out.println(timeInfoMap);
    }
}

输出示例(以上海时区为例)

{week=THURSDAY, dayOfYear=42, dayOfMonth=11, month=2, year=2021, time=23:00, zone=Asia/Shanghai}

注意事项

  • 时区请使用标准的区域ID格式(如Asia/Shanghai),不要用三位缩写(如CST),避免歧义
  • 如果需要自定义时间/星期的输出格式,可以用DateTimeFormatter.ofPattern()自行指定格式模板
  • 该方案不需要引入任何第三方依赖,java.time包从Java 8开始内置,是官方推荐的时间处理方案
其他语言实现思路
  • Python:用datetime模块的fromisoformat方法解析清洗后的时间串,用Python 3.9+内置的zoneinfo或者第三方pytz库做时区转换,提取对应字段后存入字典即可
  • JavaScript:用dayjs配合时区插件,或者原生Intl.DateTimeFormat处理,解析后提取字段存入对象即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:48:04