如何使用 Java 17 版本将日期从这种格式“dd/MMM/yyyy”转换为任何其他格式?

问题描述 投票:0回答:3

我正在尝试将日期从这种格式“dd/MMM/yyyy”转换为“yyyyMMdd”, 对于Java 1.8版本,代码工作正常,我的代码是

       SimpleDateFormat inputFormat = new SimpleDateFormat(currentFormat);
       SimpleDateFormat outputFormat = new SimpleDateFormat(newFormat);
       Date date = inputFormat.parse(dateStr);
       return outputFormat.format(date);

当我从 Java 8 更改为 java 17 时,我收到了解析异常。请帮忙,谢谢

java date simpledateformat java-17
3个回答
2
投票

除非它是向后兼容的要求,否则您应该避免旧的 Date 类及其支持类。它们有缺陷且过时。

来自

java.time
包。

您想要的是预定义的 BASIC_ISO_DATE。所以所需要的只是

from
格式。根据您的要求添加区域设置。

String dateString = "10/Jan/2023";
 
DateTimeFormatter from = DateTimeFormatter.ofPattern("dd/MMM/yyyy", Locale.ENGLISH);
LocalDate ldt = LocalDate.parse(dateString, from);
String result = ldt.format(DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(result);

打印

20230110

查看 java.time 包,了解一组丰富的类来操作各种日期和时间。


2
投票

对于 jvm17 请使用

jva.time.*
代替。

public static String convert(String dateStr) {
    LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("dd/MMM/yyyy", Locale.ENGLISH));
    return date.format(DateTimeFormatter.BASIC_ISO_DATE, Locale.ENGLISH));
}

客户端的代码将如下所示:

String dateStr = "22/Jul/2023";
System.out.println(convert(dateStr));   // 20230722 

0
投票

嗨,工作正常

import java.text.SimpleDateFormat;
import java.util.Date;

public class Hello {
    public static void main(String[] args) {
        try {
            String dateStr = "22/Jul/2023";
            SimpleDateFormat inputFormat = new SimpleDateFormat("dd/MMM/yyyy");
            SimpleDateFormat outputFormat = new SimpleDateFormat("yyyyMMdd");
            Date date = inputFormat.parse(dateStr);
            String formatted = outputFormat.format(date);
            System.out.println(formatted);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.