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
相关推荐
hqxstudying3 分钟前
java依赖注入方法
java·spring·log4j·ioc·依赖
·云扬·11 分钟前
【Java源码阅读系列37】深度解读Java BufferedReader 源码
java·开发语言
Bug退退退1231 小时前
RabbitMQ 高级特性之重试机制
java·分布式·spring·rabbitmq
小皮侠1 小时前
nginx的使用
java·运维·服务器·前端·git·nginx·github
Zz_waiting.1 小时前
Javaweb - 10.4 ServletConfig 和 ServletContext
java·开发语言·前端·servlet·servletconfig·servletcontext·域对象
全栈凯哥1 小时前
02.SpringBoot常用Utils工具类详解
java·spring boot·后端
兮动人2 小时前
获取终端外网IP地址
java·网络·网络协议·tcp/ip·获取终端外网ip地址
呆呆的小鳄鱼2 小时前
cin,cin.get()等异同点[面试题系列]
java·算法·面试
独立开阀者_FwtCoder2 小时前
"页面白屏了?别慌!前端工程师必备的排查技巧和面试攻略"
java·前端·javascript
Touper.2 小时前
JavaSE -- 泛型详细介绍
java·开发语言·算法