java date.getyear_为什么Java的Date.getYear()返回111而不是2011?

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等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值