如何使用LocalDate实现对时间操作的简单化

jdk8之前,java中做时间处理时一般会采用java.util.Date,大多吐槽Date的是其对于月份的处理是从0开始的,取得正确月份还得往后偏移一位。Date内容很丰富,不但包含年月日,还包含时间。jdk8之后,我们有更好的选择 -- java.time.LocalDate。

这是jdk8中新增的日期处理类,同时新增的还有java.time.LocalTime、java.time.LocalDateTime等。

相比Date来说,LoalDate更安全、更精确也更明确。LocalDate不包含时间,只是单纯的年月日,要精确到时分秒甚至毫秒的就需要用java.time.LocalDateTime了。

一些常用的方法:

//获取点当前时间对象
LocalDate now = LocalDate.now();//输出 : 2018-09-08

//今年是哪一年
int dayofYear = now.getDayOfYear();

//今天是哪一月
int month = now.getMonth().getValue();

// 今天是几号
int dayofMonth = now.getDayOfMonth();

// 今天是周几
int dayofWeek = now.getDayOfWeek().getValue();

//设置指定日期的时间对象:
LocalDate appoint = LocalDate.parse("2018-12-07");

//计算两个日期相差多少天:
long differ = appoint.toEpochDay()-now.toEpochDay() // differ : 90

//指定天数的加减
LocalDate minus = now.minusDays(10);
System.out.println(minus);            //minus : 2018-08-29
LocalDate plus = now.plusDays(10);
System.out.println(plus);             //plus : 2018-09-18

//校验两个日期的前后关系
boolean flag = now.isBefore(appoint);
System.out.println(flag);             //flag : true

// 获取取本月第1天:
LocalDate firstDayOfThisMonth = now .with(TemporalAdjusters.firstDayOfMonth())
System.out.println("firstDayOfThisMonth = " + firstDayOfThisMonth);   //2018-09-01

// 取本月第2天:
LocalDate secondDayOfThisMonth = now .withDayOfMonth(2);
System.out.println("secondDayOfThisMonth = " + secondDayOfThisMonth); //2018-09-02

// 取本月最后一天,再也不用计算是28,29,30还是31:
LocalDate lastDayOfThisMonth = now .with(TemporalAdjusters.lastDayOfMonth());
System.out.println("lastDayOfThisMonth = " + lastDayOfThisMonth);     //2018-09-30

// 取下月第一天:
LocalDate firstDayOfNextMonth = lastDayOfThisMonth.plusDays(1);
System.out.println("firstDayOfNextMonth = " + firstDayOfNextMonth);   //2018-10-01

// 取下月最后一天:
LocalDate lastDayOfNextOfMonth = firstDayOfNextMonth.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("lastDayOfNextOfMonth = " + lastDayOfNextOfMonth); //2018-10-31

// 取2019年1月第一个周一,用Calendar要死掉很多脑细胞:
LocalDate special = LocalDate.parse("2019-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
System.out.println("special = " + special);                           //2019-01-07



常用API

getYear()    int    获取当前日期的年份
getMonth()    Month    获取当前日期的月份对象
getMonthValue()    int    获取当前日期是第几月
getDayOfWeek()    DayOfWeek    表示该对象表示的日期是星期几
getDayOfMonth()    int    表示该对象表示的日期是这个月第几天
getDayOfYear()    int    表示该对象表示的日期是今年第几天
withYear(int year)    LocalDate    修改当前对象的年份
withMonth(int month)    LocalDate    修改当前对象的月份
withDayOfMonth(int dayOfMonth)    LocalDate    修改当前对象在当月的日期
isLeapYear()    boolean    是否是闰年
lengthOfMonth()    int    这个月有多少天
lengthOfYear()    int    该对象表示的年份有多少天(365或者366)
plusYears(long yearsToAdd)    LocalDate    当前对象增加指定的年份数
plusMonths(long monthsToAdd)    LocalDate    当前对象增加指定的月份数
plusWeeks(long weeksToAdd)    LocalDate    当前对象增加指定的周数
plusDays(long daysToAdd)    LocalDate    当前对象增加指定的天数
minusYears(long yearsToSubtract)    LocalDate    当前对象减去指定的年数
minusMonths(long monthsToSubtract)    LocalDate    当前对象减去注定的月数
minusWeeks(long weeksToSubtract)    LocalDate    当前对象减去指定的周数
minusDays(long daysToSubtract)    LocalDate    当前对象减去指定的天数
compareTo(ChronoLocalDate other)    int    比较当前对象和other对象在时间上的大小,返回值如果为正,则当前对象时间较晚,
isBefore(ChronoLocalDate other)    boolean    比较当前对象日期是否在other对象日期之前
isAfter(ChronoLocalDate other)    boolean    比较当前对象日期是否在other对象日期之后
isEqual(ChronoLocalDate other)    boolean    比较两个日期对象是否相等

关于LocalDate就说这么多吧,我也是刚刚学的,原创,转载请表明出处,谢谢。

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社上,关于信息上面的处理,没有任何一个企业或者个人忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值