LocalDate的使用和方法

时间不仅是人类生活的基本概念,在编程中同样重要。当然,Java 也为处理时间相关的内容提供了一些工具。我们先从时间单位中的“天”(或者说日期)开始讲起。

LocalDate 类表示一个单一日期,格式是 YYYY-MM-dd,例如 2017-11-252025-01-23。它可以用来保存任何日期:从你的生日到世界末日那天。

这个类属于 java.time 包。


创建 LocalDate 实例和获取当前日期

导入类之后,可以通过下面的代码创建一个存储当前日期的实例:

LocalDate now = LocalDate.now();

当然,也可以创建表示某年某一天的具体日期的实例。LocalDate 提供了两个静态方法 ofparse 来完成:

LocalDate date1 = LocalDate.of(2017, 11, 25); // 2017-11-25(2017年11月25日)
LocalDate date2 = LocalDate.parse("2017-11-25"); // 2017-11-25(2017年11月25日)

月份的编号是从 1 到 12,且一个月中的第一天编号为 1,非常直观。

另一个有用的方式是通过指定年份和该年中的第几天来创建日期:

LocalDate.ofYearDay(2017, 33); // 2017-02-02(2017年2月2日)

第几天是一个 int 类型的数字,范围从 1 到 365(平年)或 366(闰年)。

LocalDate.ofYearDay(2016, 365); // 2016-12-30(2016年12月30日)
LocalDate.ofYearDay(2017, 365); // 2017-12-31(2017年12月31日)

不过需要注意,闰年的第366天可以有,非闰年的第366天会抛出异常:

LocalDate.ofYearDay(2016, 366); // 2016-12-31(2016年12月31日)
LocalDate.ofYearDay(2017, 366); // 会抛异常,因为2017年不是闰年

LocalDate 的年份、月份、日期及长度信息

考虑以下 LocalDate 实例:

LocalDate date = LocalDate.of(2017, 11, 25); // 2017-11-25(2017年11月25日)

可以获取年份、月份、当月第几天、当年第几天:

int year = date.getYear();           // 2017
int month = date.getMonthValue();    // 11
int dayOfMonth = date.getDayOfMonth(); // 25
int dayOfYear = date.getDayOfYear(); // 329

还能获取该年的天数和该月的天数:

int lenOfYear = date.lengthOfYear();   // 365
int lenOfMonth = date.lengthOfMonth(); // 30

LocalDate 的算术运算方法

LocalDate 还提供了添加、减少或改变天、月、年的方法。比如创建一个日期:

LocalDate date = LocalDate.of(2017, 1, 1); // 2017-01-01(2017年1月1日)

然后用这些方法:

LocalDate tomorrow = date.plusDays(1);    // 2017-01-02(2017年1月2日)
LocalDate yesterday = date.minusDays(1);  // 2016-12-31(2016年12月31日)
LocalDate inTwoYears = date.plusYears(2); // 2019-01-01(2019年1月1日)
LocalDate in2016 = date.withYear(2016);   // 2016-01-01(2016年1月1日)

总结

如你所见,LocalDate 类提供了丰富且实用的方法来处理日期。它是不可变的(immutable),每个方法调用都会返回该类的新实例,所以请放心使用这些方法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值