String str = "Jan 15";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd");
LocalDate parsed = LocalDate.parse(str, formatter);我一直有这样的例外:
线程"main“中的异常:在java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849) at java.time.LocalDate.parse(LocalDate.java:400) at com.mach5.T.main(T.java:17)的索引0处无法解析文本'Jan 15‘
有人能帮我吗?
发布于 2017-12-02 21:13:14
tl;dr
解析为MonthDay而不是LocalDate。
MonthDay.parse(
"Jan 15" ,
DateTimeFormatter.ofPattern( "MMM dd" , Locale.US )
)-01-15
MonthDay
您的输入缺少一年,因此不能将其解析为LocalDate。相反,将其解析为MonthDay。
如果要解析一个表示一个月日期的字符串,请使用一个表示月日值的类。那堂课是MonthDay。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM dd" , Locale.US ) ;
String input = "Jan 15" ;
MonthDay md = MonthDay.parse( input , f ) ;md.toString():-01-15
生成的输出字符串中的双连字符遵循ISO 8601标准,表示年份未知/省略。
LocalDate
如果知道的话,你可以分配一年。
LocalDate ld = md.atYear( 2017 ) ;ld.toString():2017-01-15
关于java.time
java.time框架内置到Java8和更高版本中。这些类取代了麻烦的旧遗赠日期时间类,如java.util.Date、Calendar和SimpleDateFormat。
尤达-时间项目现在在维护模式中,建议迁移到java.time类。
要了解更多信息,请参见Oracle教程。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310。
在哪里获得java.time类?
三次-额外项目使用其他类扩展java.time。这个项目是将来可能加入java.time的试验场。您可以在这里找到一些有用的类,如Interval、YearWeek、YearQuarter和更多。
发布于 2017-12-02 20:11:30
您可以执行以下操作:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("MMM dd")
.parseDefaulting(ChronoField.YEAR, Year.now(ZoneId.systemDefault()).getValue())
.toFormatter();
LocalDate parsed = LocalDate.parse(str, formatter);发布于 2017-12-02 20:11:57
没有一年就不能创建LocalDate。
所以要么你需要加一个。
String str = "Jan 15 2016";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM d yyyy", Locale.ENGLISH);
LocalDate parsed = LocalDate.parse(str, formatter);或者您可以修改格式化程序以填写当前年份,也可以检查这个职位。
String str = "Jan 15";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("MMM d")
.parseDefaulting(ChronoField.YEAR, Year.now(ZoneId.systemDefault()).getValue())
.toFormatter(Locale.ENGLISH);;
LocalDate parsed = LocalDate.parse(str, formatter);https://stackoverflow.com/questions/47611900
复制相似问题