根据字符串选择日期格式
Selecting Date format based on the string
我有 class 从其他 class 接收字符串格式的日期。它现在接收两种不同的格式
格式 1:YYYY_MM_DD
格式 2:EEE MMM dd HH:mm:ss z yyyy
现在我想编写一个方法来接收这个字符串并将其转换为所需的格式,如下所示 'DDMMMYYYY '
你可以尝试暴力解析捕获异常:
编辑:
使用 java8 API(根据您的需要调整格式 need/want)
public String convertDateFormatJ8(String format) {
String retFormat = "ddMMyyy";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("[yyyy_dd_MM][yyyy-MM-dd HH:mm]");
try {
LocalDateTime localDate = LocalDateTime.parse(format, formatter);
return localDate.format(DateTimeFormatter.ofPattern(retFormat));
} catch (DateTimeParseException ex) {
System.err.println("impossible to parse to yyyy-MM-dd HH:mm");
}
try {
LocalDate localDate = LocalDate.parse(format, formatter);
return localDate.format(DateTimeFormatter.ofPattern(retFormat));
} catch (DateTimeParseException ex) {
System.err.println("impossible to parse to yyyy_dd_MM");
}
return null;
}
旧 java 版本
public String convertDateFormat(String format) {
DateFormat df1 = new SimpleDateFormat("YYYY_MM_DD");
DateFormat df2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
DateFormat dfResult = new SimpleDateFormat("DDMMMYYYY ");
Date d = null;
try {
d = df1.parse(format);
return dfResult.format(d);
} catch (ParseException e) {
System.err.println("impossible to parse to " + "YYYY_MM_DD");
}
try {
d = df2.parse(format);
return dfResult.format(d);
} catch (ParseException e) {
System.err.println("impossible to parse to " + "EEE MMM dd HH:mm:ss z yyyy");
}
return null;
}
如果您提供任何其他无效字符串,则返回的字符串将为空!
您可以使用此方法并在模式中声明可选部分:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("[yyyy_MM_dd][EEE MMM dd HH:mm:ss Z yyyy]", Locale.ENGLISH);
此 formatter
将解析两种模式的日期,然后您可以轻松地将其转换为所需格式。
P.S。我已经对其进行了测试,但不确定 EEE MMM dd HH:mm:ss Z yyyy
模板应该解析哪个日期。所以只是玩它并使用 Java 8 种方法(Java 时间)
我有 class 从其他 class 接收字符串格式的日期。它现在接收两种不同的格式
格式 1:YYYY_MM_DD
格式 2:EEE MMM dd HH:mm:ss z yyyy
现在我想编写一个方法来接收这个字符串并将其转换为所需的格式,如下所示 'DDMMMYYYY '
你可以尝试暴力解析捕获异常:
编辑:
使用 java8 API(根据您的需要调整格式 need/want)
public String convertDateFormatJ8(String format) {
String retFormat = "ddMMyyy";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("[yyyy_dd_MM][yyyy-MM-dd HH:mm]");
try {
LocalDateTime localDate = LocalDateTime.parse(format, formatter);
return localDate.format(DateTimeFormatter.ofPattern(retFormat));
} catch (DateTimeParseException ex) {
System.err.println("impossible to parse to yyyy-MM-dd HH:mm");
}
try {
LocalDate localDate = LocalDate.parse(format, formatter);
return localDate.format(DateTimeFormatter.ofPattern(retFormat));
} catch (DateTimeParseException ex) {
System.err.println("impossible to parse to yyyy_dd_MM");
}
return null;
}
旧 java 版本
public String convertDateFormat(String format) {
DateFormat df1 = new SimpleDateFormat("YYYY_MM_DD");
DateFormat df2 = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
DateFormat dfResult = new SimpleDateFormat("DDMMMYYYY ");
Date d = null;
try {
d = df1.parse(format);
return dfResult.format(d);
} catch (ParseException e) {
System.err.println("impossible to parse to " + "YYYY_MM_DD");
}
try {
d = df2.parse(format);
return dfResult.format(d);
} catch (ParseException e) {
System.err.println("impossible to parse to " + "EEE MMM dd HH:mm:ss z yyyy");
}
return null;
}
如果您提供任何其他无效字符串,则返回的字符串将为空!
您可以使用此方法并在模式中声明可选部分:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("[yyyy_MM_dd][EEE MMM dd HH:mm:ss Z yyyy]", Locale.ENGLISH);
此 formatter
将解析两种模式的日期,然后您可以轻松地将其转换为所需格式。
P.S。我已经对其进行了测试,但不确定 EEE MMM dd HH:mm:ss Z yyyy
模板应该解析哪个日期。所以只是玩它并使用 Java 8 种方法(Java 时间)