各种时间字符串转换

博客围绕Java开发语言展开,但具体内容缺失。Java是重要的后端开发语言,应用广泛。

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

public static void batchTransfer() {
        Map<String, String> map = new HashMap<>();
        map.put("Oct 1, 2022 5:54:31 PM PDT", "2022-10-01 17:54:31");
        map.put("2022-12-26 10:06:05", "2022-12-26 10:06:05");
        map.put("Jan 1, 2023 6:15:03 p.m. PST", "2023-01-01 18:15:03");
        map.put("Jan 1, 2023 6:15:03 a.m. PST", "2023-01-01 06:15:03");
        map.put("7 ene 2023 03:33:31 GMT-8", "2023-01-07 03:33:31");
        map.put("10/16/2022", "2022-10-16");
        map.put("2022-10-17 01:16:13.16928 +00:00", "2022-10-17 01:16:13");
        map.put("2022-10-31T14:20:19.000-06:00", "2022-10-31 14:20:19");
        map.put("2023-03-16 ( GMT+8 )", "2023-03-16");
        map.put("2022-10-27 ( UTC-08:00 )", "2022-10-27");
        map.put("2023.03.01", "2023-03-01");
        map.put("05/09/2023 12:00 AM", "2023-05-09 00:00:00");
        map.put("Nov 7, 2020 4:55:18 PM GMT+0800","2020-11-07 16:55:18");
        map.put("Nov 17, 2022 08:00:00 AM (PST)","2022-11-17 08:00:00");
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        for (String testDate : map.keySet()) {
            LocalDateTime localDateTime = LocalDateUtils.getLocalDateTime(testDate);
            String target = null;
            if(Objects.nonNull(localDateTime)) {
                target = localDateTime.format(dateTimeFormatter);
            }else {
                LocalDate localDate = LocalDateUtils.getLocalDate(testDate);
                if(Objects.nonNull(localDate)) {
                    DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                    target = localDate.format(dateTimeFormatter1);
                }
            }
            if(StringUtils.isBlank(target)) {
                System.out.println("false" + "----" +testDate + "---" + "转换失败,无法识别的时间格式");
            } else {
                System.out.println(StringUtils.equals(map.get(testDate), target) + "----" + testDate + "---" + target);
            }
        }
    }
/**
     * 自动匹配解析日期time
     *
     * @param dateStr 日期字符串
     * @return 返回相对应日期
     */
    public static LocalDateTime getLocalDateTime(String dateStr) {
        dateStr = LocalDateUtils.MoXiGeMonth.replaceMoxiGe(dateStr);
        dateStr = dateStr.replaceAll("a.m.", "AM").replaceAll("p.m.", "PM");
        dateStr = dateStr.replaceAll("GMT-8", "GMT-0800");
        dateStr = dateStr.replaceAll("\\(GMT\\+8\\)", "GMT+0800");
        boolean matches = AM_PATTERN_12.matcher(dateStr).find();
        if (matches) {
            dateStr = dateStr.replace("12:", "00:");
        }
        for (int i = 0; i < LocalDateUtils.LOCAL_DATE_TIME_FORMATS.length; i++) {
            try {
                LocalDateTime localDateTime = LocalDateTime.parse(dateStr, LocalDateUtils.LOCAL_DATE_TIME_FORMATS[i]);
                return localDateTime;
            } catch (Exception e) {
            }
        }
        return null;
    }
public final static DateTimeFormatter[] LOCAL_DATE_TIME_FORMATS = {
            DateTimeFormatter.ofPattern("yyyy-M-d H:m"),
            DateTimeFormatter.ofPattern("yyyy-M-d H:m:s"),
            DateTimeFormatter.ofPattern("yyyy/M/d H:m"),
            DateTimeFormatter.ofPattern("yyyy/M/d H:m:s"),
            DateTimeFormatter.ofPattern("M/d/yyyy H:m:s"),
            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSS z"),
            DateTimeFormatter.ofPattern("MMM d, yyyy h:mm:ss a z", Locale.ENGLISH),
            DateTimeFormatter.ofPattern("MMM d, yyyy h:mm:ss a 'GMT'Z", Locale.ENGLISH),
            DateTimeFormatter.ofPattern("MMM d, yyyy h:mm:ss a (z)", Locale.ENGLISH),
            DateTimeFormatter.ofPattern("EEE MMM d HH:mm:ss 'CST' yyyy", Locale.ENGLISH).withZone(TimeZone.getTimeZone("PDT").toZoneId()),
            DateTimeFormatter.ofPattern("d MMM yyyy HH:mm:ss z", Locale.ENGLISH),
            DateTimeFormatter.ofPattern("d MMM yyyy HH:mm:ss 'GMT'Z", Locale.ENGLISH),
            DateTimeFormatter.ISO_OFFSET_DATE_TIME,
            DateTimeFormatter.ofPattern("M/d/yyyy H:m a", Locale.ENGLISH)
    };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值