为了账号安全,请及时绑定邮箱和手机立即绑定

无法解析的日期异常java日期模式

无法解析的日期异常java日期模式

拉丁的传说 2023-05-10 15:01:25
我在尝试使用这种格式解析日期时遇到错误:2001 年 3 月 26 日 2001 年 8 月 15 日我正在使用下一个代码:    private void parseDate(String firstDate) {        Date fDate = null;        try {            fDate = new SimpleDateFormat("dd-MMM-yyyy").parse(firstDate);        } catch (ParseException e) {            e.printStackTrace();        }    }但我收到错误消息:无法解析的日期:“15-August-2001”。我不太确定我必须使用哪种日期格式。谢谢
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

LocalDate
.parse(  
  "15-August-2001" , 
    DateTimeFormatter.ofPattern( "dd-MMMM-uuuu" , Locale.US )
)
.toString()

提示:最好仅使用标准ISO 8601格式以文本方式交换日期时间数据。

java.time

虽然在技术上是正确的,但已经过时了。现代方法使用java.time类,这些类通过采用 JSR 310 取代了遗留的日期时间类。

LocalDate

该类LocalDate表示没有日期时间和时区或offset-from-UTC 的仅日期值。

DateTimeFormatter

使用 定义自定义格式化模式DateTimeFormatter.ofPattern。格式化代码与遗留类不完全相同SimpleDateFormat,所以一定要仔细研究 Javadoc。

指定 aLocale以确定在翻译月份名称时使用的人类语言。

String input = "15-August-2001" ;

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMMM-uuuu" , Locale.US ) ;

LocalDate ld = LocalDate.parse( input , f ) ;


System.out.println( "ld.toString(): " + ld ) ;

ld.toString(): 2001-08-15

//img1.sycdn.imooc.com/645b41740001256806580413.jpg

查看完整回答
反对 回复 2023-05-10
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

使用Locale.US以便考虑美国格式的月份名称

SimpleDateFormat("dd-MMM-yyyy",Locale.US)


查看完整回答
反对 回复 2023-05-10
  • 2 回答
  • 0 关注
  • 183 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信