Java 8 LocalDateTime

JDK8中增加了一系列时间的类,(据说)是为了干掉过去的Date,Calendar类的,过去的Date类(据说)有着线程不安全等诸多弊端。

至于我的个人感受就是用起来实在是很麻烦,我一般封装成几个常用的方法以后每次就调方法,再也不想看里面是怎么实现的了。
发现了LocalDateTime 这种新类以后,经过我的简单的试用,觉得完全可以取代掉之前使用时间的一切方法。非常好用,太好用了。

创建

根据 创建 LocalDateTime

1
2
3
4
5
6
7
8
LocalTime zero = LocalTime.of(0, 0, 0);
System.out.println(zero);

LocalTime mid = LocalTime.parse("12:00:00");
System.out.println(mid);

LocalTime now = LocalTime.now();
System.out.println(now);

输出结果

1
2
3
00:00
12:00
14:08:11.534

LocalDatetime 部分方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
LocalDate today = LocalDate.now();
System.out.println("取当前日期:" + today);

LocalDate crischristmas = LocalDate.of(1998, 10, 15);
System.out.println("根据年月日取日期:" + crischristmas);

LocalDate endOfFeb = LocalDate.parse("2014-02-28");
System.out.println("根据字符串取:" + endOfFeb + " (严格按照ISO yyyy-MM-dd验证)");

LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth());
System.out.println("取本月第一天:" + firstDayOfThisMonth);

LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());
System.out.println("取本月最后一天:" + lastDayOfThisMonth);

LocalDate firstMondayOf2017 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
System.out.println("取2017年1月第一个周一:" + firstMondayOf2017);

输出结果

1
2
3
4
5
6
取当前日期:2018-08-05
根据年月日取日期:1998-10-15
根据字符串取:2014-02-28 (严格按照ISO yyyy-MM-dd验证)
取本月第一天:2018-08-01
取本月最后一天:2018-08-31
20171月第一个周一:2017-01-02

对应的SQL的类型

SQL Java
date LocalDate
time LocalTime
timestamp LocalDateTime
-------------- 本文结束  感谢您的阅读 --------------
0%