java 日期时区转换类

public class DateUtils {

    /**
     * 标准日期时间格式,精确到秒:yyyy-MM-dd HH:mm:ss
     */
    public static final String NORM_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";


    /**
     * UTC时间:yyyy-MM-dd'T'HH:mm:ss'Z'
     */
    public static final String UTC_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";


    public static String timeZoneTransfer(String srcTime) {
        return timeZoneTransfer(srcTime, NORM_DATETIME_PATTERN, ZoneId.systemDefault().getId());
    }


    /**
     * 时间时区转换为本地时间,输出格式为 yyyy-MM-dd HH:mm:ss
     *
     * @param srcTime    原始时间字符串
     * @param srcPattern 原始时间字符串日期格式
     * @param srcZoneId  原始时间的时区
     * @return
     */
    public static String timeZoneTransfer(String srcTime, String srcPattern, String srcZoneId) {
        return timeZoneTransfer(srcTime, srcPattern, srcZoneId, UTC_PATTERN, "UTC");
    }


    /**
     * 时间时区转换
     *
     * @param srcTime    原始时间字符串
     * @param srcPattern 原始时间字符串日期格式  yyyy-MM-dd HH:mm:ss 等
     * @param srcZoneId  原始时间的时区
     * @param dstPattern 目标时间输出格式
     * @param dstZoneId  目标时区
     * @return 时区转换后的格式化时间字符串
     */
    public static String timeZoneTransfer(String srcTime, String srcPattern, String srcZoneId,
                                          String dstPattern, String dstZoneId) {

        // 解析时间字符串为 LocalDateTime 对象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(srcPattern);
        LocalDateTime secDateTime = LocalDateTime.parse(srcTime, formatter);

        // 将 src 时间转换为 dst 时间
        ZonedDateTime dstDateTime = secDateTime
                .atZone(ZoneId.of(srcZoneId))
                .withZoneSameInstant(ZoneId.of(dstZoneId));

        // 格式化输出时间字符串
        String outputDateTimeStr = dstDateTime.format(DateTimeFormatter.ofPattern(dstPattern));

        return outputDateTimeStr;
    }


    public static void main(String[] args) {
        String srcTime = "2023-07-26 14:00:00";

        System.out.println(timeZoneTransfer(srcTime));

        String utcTime = "2023-06-29T13:29:54Z";

        System.out.println(timeZoneTransfer(utcTime, UTC_PATTERN, "UTC", NORM_DATETIME_PATTERN,
                ZoneId.systemDefault().getId()));
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值