java根据时区转换获取时间的方法

方法一:

复制代码
 public static void main(String[] args) {
        // 假设这是从MySQL获取的UTC时间字符串
        String utcTimeStr = "2024-09-30T16:00:00Z";
        try {
            // 解析UTC时间字符串
            DateTime parsedDateTime = DateUtil.parse(utcTimeStr);
            // 转换为指定时区时间
            DateTime shanghaiDateTime = DateUtil.convertTimeZone(parsedDateTime, ZoneId.of("Asia/Shanghai"));
            // 转换为GMT时间
            DateTime gmtDateTime = DateUtil.convertTimeZone(parsedDateTime, ZoneId.of("Etc/GMT"));
            // 格式化输出
            System.out.println("格式化输出"+shanghaiDateTime);
            // 输出GMT时间
            System.out.println("输出GMT时间"+gmtDateTime);
            // 格式化输出
            String format1 = DateUtil.format(shanghaiDateTime, "yyyy-MM-dd HH:mm:ss");
            String format2 = DateUtil.format(gmtDateTime, "yyyy-MM-dd HH:mm:ss");
            // 输出转换后的时间字符串
            System.out.println("格式化[Asia/Shanghai]输出"+format1);
            // 输出GMT时间字符串
            System.out.println("格式化[Etc/GMT]输出"+format2);
        } catch (Exception e) {
            System.err.println("时间解析或转换失败: " + e.getMessage());
        }
    }

控制台输出如下:

复制代码
格式化输出2024-10-01 00:00:00
输出GMT时间2024-09-30 16:00:00
格式化[Asia/Shanghai]输出2024-10-01 00:00:00
格式化[Etc/GMT]输出2024-09-30 16:00:00

方法二:

复制代码
 /**
     * 时间字符串转换为指定时区时间字符串
     * @param dateStr 时间字符串
     * @param zoneId  时区ID
     * @return 指定时区时间字符串
     */
    private static String timeZoneConvert(String dateStr, String zoneId) {
        DateTime parse = DateUtil.parse(dateStr);
        log.info("原始时间:{}", parse);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
        // 设置时区:例如:Asia/Shanghai
        sdf.setTimeZone(TimeZone.getTimeZone(zoneId));
        String str = sdf.format(parse);
        log.info("转换后时间:{}", str);
        return str;
    }
复制代码
public static void main(String[] args) {
        // UTC时间字符串转化为指定时区时间字符串
        String dateStr = "2024-09-30T16:00:00Z";
        // 时区ID
        String zoneId = "GMT+8";
        // 时间转换处理
        String dateFormatStr = timeZoneConvert(dateStr, zoneId);
        // 输出转换后的时间字符串
        System.out.println("原始时间字符串:" + dateStr);
        // 输出转换后的时间字符串
        System.out.println("转换后的时间字符串:" + dateFormatStr);
    }

控制台输出如下:

复制代码
0:54:12.158 [main] INFO com.songwp.test.Test05 - 原始时间:2024-09-30 16:00:00
10:54:12.161 [main] INFO com.songwp.test.Test05 - 转换后时间:2024-10-01 00:00:00
原始时间字符串:2024-09-30T16:00:00Z
转换后的时间字符串:2024-10-01 00:00:00
相关推荐
ZHOUPUYU3 小时前
最新 neo4j 5.26版本下载安装配置步骤【附安装包】
java·后端·jdk·nosql·数据库开发·neo4j·图形数据库
Q_19284999064 小时前
基于Spring Boot的找律师系统
java·spring boot·后端
谢家小布柔5 小时前
Git图形界面以及idea中集合Git使用
java·git
loop lee5 小时前
Nginx - 负载均衡及其配置(Balance)
java·开发语言·github
smileSunshineMan5 小时前
vertx idea快速使用
java·ide·intellij-idea·vertx
阿乾之铭5 小时前
IntelliJ IDEA中的语言级别版本与目标字节码版本配置
java·ide·intellij-idea
toto4125 小时前
线程安全与线程不安全
java·开发语言·安全
筏镜6 小时前
调整docker bridge地址冲突,通过bip调整 bridge地址
java·docker·eureka
winner88816 小时前
git merge 冲突 解决 show case
java·git·git merge·git冲突
AI人H哥会Java7 小时前
【Spring】Spring的模块架构与生态圈—Spring MVC与Spring WebFlux
java·开发语言·后端·spring·架构