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

Java中如何给当前时间加1小时并转换为UTC时区?

获取当前时间加1小时后的UTC时区日期

现有代码的问题

你的代码存在几个关键错误:

  • Calendar的时区设置顺序错误:先基于本地时区做小时递增,再切换到UTC时区,导致时间计算逻辑混乱。
  • SimpleDateFormat格式化的是原始当前时间(new Date()),没有用到已经加了1小时的Calendar实例。
  • 无效代码行:simpleDateFormat.format(calendar.get(Calendar.HOUR))传入的是小时数值而非Date对象,且未保存结果,完全没有作用。

修正后的旧API实现(Java 8之前)

如果必须使用Calendar和SimpleDateFormat,可以按以下方式修改:

public static void main(String[] args) {
    // 直接创建UTC时区的Calendar实例
    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    // 给UTC时间增加1小时
    calendar.add(Calendar.HOUR_OF_DAY, 1);
    
    // 初始化格式化器并设置为UTC时区
    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy");
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    
    // 格式化加1小时后的UTC时间
    String dateOfDeletion = sdf.format(calendar.getTime());
    
    System.out.println("当前本地时间: " + new Date());
    System.out.println("当前时间加1小时后的UTC时间: " + dateOfDeletion);
}

说明:Calendar.getInstance(TimeZone.getTimeZone("UTC"))直接基于UTC时区初始化日历,后续的小时递增操作都是在UTC时间基础上进行的,最后用同时区的格式化器输出即可得到正确结果。

推荐:Java 8+ 新日期API实现

Java 8引入的java.time包解决了旧API的线程不安全、设计冗余等问题,实现更简洁直观:

import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public static void main(String[] args) {
    // 获取当前UTC时间并加1小时
    ZonedDateTime utcPlus1Hour = ZonedDateTime.now(ZoneOffset.UTC).plusHours(1);
    
    // 定义日期时间格式
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss z yyyy");
    
    // 格式化输出结果
    String dateOfDeletion = utcPlus1Hour.format(formatter);
    
    System.out.println("当前本地时间: " + ZonedDateTime.now());
    System.out.println("当前时间加1小时后的UTC时间: " + dateOfDeletion);
}

说明:ZonedDateTime.now(ZoneOffset.UTC)直接获取当前UTC时间,plusHours(1)完成小时递增,最后通过格式化器输出指定格式的UTC时间字符串,逻辑清晰且无线程安全问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:37:46