gpt4 book ai didi

java - 使用 SimpleDateFormat 无法解析日期

转载 作者:行者123 更新时间:2023-12-02 02:48:15 26 4
gpt4 key购买 nike

我有一个日期,一直给我错误

java.text.ParseException: Unparseable date: " 5 April 2017  "

所有其他日期(不含月份)都可以正常工作

我使用的代码如下:

VisitDate=VisitDate.trim();
if (VisitDate.matches(".*[a-z].*")){
SimpleDateFormat changeDate = new SimpleDateFormat("dd_MMM_yy", Locale.UK);
//Convert the string to a date
Date date = changeDate.parse(VisitDate);
//Reformat the date the way I like it
SimpleDateFormat dt1 = new SimpleDateFormat("dd_MM_yy");

//Convert back into a string
try {
VisitDate=dt1.format(date);
if(VisitDate==null){
SimpleDateFormat dt2 = new SimpleDateFormat("dd MM yy");
//Convert back into a string
VisitDate=dt2.format(date);
if(VisitDate==null){
SimpleDateFormat dt3 = new SimpleDateFormat("dd MMMM yy");
//Convert back into a string
VisitDate=dt3.format(date);
if(VisitDate==null){
SimpleDateFormat dt4 = new SimpleDateFormat("d_MMM_yy");
//Convert back into a string
VisitDate=dt4.format(date);
if(VisitDate==null){
SimpleDateFormat dt5 = new SimpleDateFormat("d_MMMM_yy");
//Convert back into a string
VisitDate=dt5.format(date);
if(VisitDate==null){
SimpleDateFormat dt6 = new SimpleDateFormat("dd_MMM_yy");
//Convert back into a string
VisitDate=dt6.format(date);
if(VisitDate==null){
SimpleDateFormat dt7 = new SimpleDateFormat("dd_MMM_yyyy");
//Convert back into a string
VisitDate=dt7.format(date);
if(VisitDate==null){
SimpleDateFormat dt8 = new SimpleDateFormat("dd_MMMM_yyyy");
//Convert back into a string
VisitDate=dt8.format(date);
if(VisitDate==null){
VisitDate=VisitDate.replaceAll("\\s", "");

SimpleDateFormat dt9 = new SimpleDateFormat("dd MMMM yyyy");
//Convert back into a string
VisitDate=dt9.format(date);
}
}
}
}
}
}
}
}
} catch (Exception e) {
Logger.error(e+"->No visit Date frmo here with the original date as: "+date);
}
}

最佳答案

很高兴看到您对现代日期和时间类(class)表达的兴趣,这里只是一个帮助您入门的代码片段:

    String visitDate = " 5 April 2017  ";
DateTimeFormatter parseFormatter
= DateTimeFormatter.ofPattern("d MMMM uuuu", Locale.UK);
visitDate = visitDate.trim();
LocalDate date = LocalDate.parse(visitDate, parseFormatter);
// reformat to the string we like
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd_MM_uu");
visitDate = date.format(formatter);

结果是

05_04_17

我将 visitDate 拼写为小 v,因为 Java 编码约定建议变量名称以小字母开头。

uu 很微妙,您可能可以忽略它。这是一个有符号的年份,其中 0 等于 1 BC,-1 等于 2 BC,依此类推。假设您的日期都不是那么旧,您可以互换使用 uy

我相信 SimpleDateFormat.format()LocalDate.format() 都不会返回 null,因此所有 null 检查都是多余的。

进一步阅读链接:Oracle tutorial: Trail: Date Time

关于java - 使用 SimpleDateFormat 无法解析日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44232024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com