ISO8601标准时间格式转换

这是一个Java时间工具类,主要用于ISO8601日期格式与标准日期格式之间的转换。提供了两个主要方法,convertDateStrFromISO8601将ISO8601格式转换为yyyy-MM-ddHH:mm:ss格式,而convertISO8601FromDateStr则执行相反的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import cn.jinka.gcdp.securecenter.port.adapter.resource.SecureCenterApplicationException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
import java.util.Locale;

/**
 * 时间工具类
 *
 * @Author : wxj
 */
@Slf4j
public class LocalDateTimeUtil {
    static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

    static String YYYY_MM_DD = "yyyy-MM-dd";

    static String YYYY_MM_DD_T_HH_MM_SS_SSSXXX = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";

    static String EEE_MMM_DD_HH_MM_SS_Z_YYYY = "EEE MMM dd HH:mm:ss Z yyyy";

    /**
     * 日期格式转换yyyy-MM-dd'T'HH:mm:ss.SSSXXX  (yyyy-MM-dd'T'HH:mm:ss.SSSZ) TO  yyyy-MM-dd HH:mm:ss
     * 2020-04-09T23:00:00.000+08:00 TO 2020-04-09 23:00:00
     * oldDateStr = "2016-10-15T00:00:00.000+08:00";
     */
    public static String convertDateStrFromISO8601(String oldDateStr){
        String result;
        try {
            DateFormat df = new SimpleDateFormat(YYYY_MM_DD_T_HH_MM_SS_SSSXXX);
            Date date = df.parse(oldDateStr);
            SimpleDateFormat df1 = new SimpleDateFormat(EEE_MMM_DD_HH_MM_SS_Z_YYYY, Locale.UK);
            Date date1 = df1.parse(date.toString());
            DateFormat df2 = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
            result = df2.format(date1);
        } catch (Exception e) {
            log.error("日期转换报错", e);
        }
        return result;
    }

    /**
     * 日期格式转换yyyy-MM-dd HH:mm:ss TO  yyyy-MM-dd'T'HH:mm:ss.SSSXXX  (yyyy-MM-dd'T'HH:mm:ss.SSSZ)
     * 2020-04-09 23:00:00 TO 2020-04-09T23:00:00.000+08:00
     * oldDateStr = "2020-04-09 23:00:00";
     */
    public static String convertISO8601FromDateStr(String oldDateStr) {
        try {
            DateFormat df2 = new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS);
            Date date = df2.parse(oldDateStr);
            SimpleDateFormat df1 = new SimpleDateFormat(EEE_MMM_DD_HH_MM_SS_Z_YYYY, Locale.UK);
            Date date1 = df1.parse(date.toString());
            DateFormat df = new SimpleDateFormat(YYYY_MM_DD_T_HH_MM_SS_SSSXXX);
            return df.format(date1);
        } catch (Exception e) {
            log.error("日期转换报错", e);
        }
    }
 
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值