tl;博士
int year =
LocalDate.parse(
"04/12/2011" ,
DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT ).withLocale( Locale.US )
).getYear() ;
2011
java.time
麻烦的Interval类及其兄弟类现在已由出色的java.time类取代。
String input = "04/12/2011";
Locale locale = Locale.US;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.SHORT ).withLocale( locale );
LocalDate ld = LocalDate.parse( input , f );
java.time类利用合理的编号,其中包括:
1月-12月的1-12个月
2011代表2011
周一至周的星期几为1-7(根据ISO 8601)。
询问Interval的组成部分。
int year = ld.getYear(); // 2011
int month = ld.getMonthValue(); // 4
int dayOfMonth = ld.getDayOfMonth(); // 12
您甚至可以要求自动本地化的月份名称和星期几的名称。
String monthName = ld.getMonth().getDisplayName( TextStyle.FULL_STANDALONE , Locale.CANDA_FRENCH ); // avril
关于java.time
java.time框架内置于Java 8及更高版本中。 这些类别取代了麻烦的旧日期时间类别,例如Interval、YearWeek和YearQuarter。
现在处于维护模式的Joda-Time项目建议迁移到java.time。
要了解更多信息,请参见Oracle教程。 并在Stack Overflow中搜索许多示例和说明。
许多java.time功能都在ThreeTen-Backport中反向移植到Java 6和7,并在ThreeTenABP中进一步适应了Android(请参阅如何使用…)。
ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如Interval、YearWeek、YearQuarter等。