我在尝试使用这种格式解析日期时遇到错误: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
添加回答
举报
0/150
提交
取消