我正在尝试将日期从这种格式“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 时,我收到了解析异常。请帮忙,谢谢
除非它是向后兼容的要求,否则您应该避免旧的 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 包,了解一组丰富的类来操作各种日期和时间。
对于 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
嗨,工作正常
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();
}
}
}