string到LocalDate

如何将string转换为LocalDate

我见过像这样的例子:

 LocalDate dt = new LocalDate("2005-11-12"); 

但是我的string是这样的:

 2005-nov-12 

当你使用Joda时间,你应该使用DateTimeFormatter

 final DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MMM-dd"); final LocalDate dt = dtf.parseLocalDate(yourinput); 

如果使用Java 8或更高版本,请参阅hertzi的答案

从Java 1.8开始,你可以在没有额外的库的情况下实现这一点:

 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd"); formatter = formatter.withLocale( putAppropriateLocaleHere ); // Locale specifies human language for translating, and cultural norms for lowercase/uppercase and abbreviations and such. Example: Locale.US or Locale.CANADA_FRENCH LocalDate date = LocalDate.parse("2005-nov-12", formatter); 

虽然语法几乎相同。

您可能必须从DateTime到LocalDate。

 DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd"); DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12"); LocalDate localDate = dateTime.toLocalDate(); 

date时间格式由org.joda.time.format.DateTimeFormatter class执行。 三个类提供工厂方法来创build格式化程序 ,这是一个。 其他的是ISODateTimeFormatDateTimeFormatterBuilder

 DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd"); LocalDate lDate = new LocalDate().parse("2005-nov-12",format); 

final org.joda.time.LocalDate class是一个不可变的date时间类,代表没有时区的date。 LocalDate线程安全和不可变的 ,只要还有年表 。 所有提供的标准年表类都是线程安全和不可变的。