java8新特性之时间API

为什么需要在Java8中引入新的日期和时间库?

  1. 在java1.0中,对时间和日期的支持只能依赖 java.util.date 类,但这个类无法表示日期,只能以毫秒的精度表示时间,易用性也较低。
Date date = new Date(114,2,18);
//打印结果
Tue Mar 18 00:00:00 CST 2014
  1. 在java1.1中,同时存在Date和Calendar类,增加了程序员的选择困惑,并且月份是从0开始
  2. DateFormate类只支持Date类

LocalDate:提供简单的日期,不包含时间信息

//创建一个不可变的日期对象
LocalDate date = LocalDate.now(); //返回当前日期
LocalDate date = LocalDate.of(2014,3,18); //返回一个指定日期
LocalDate date = LocalDate.parse("2014-03-18"); //解析字符串,生成一个LocalDate对象
...

//获取日期时间的方法
int year = date.getYear(); //获取年
getDayOfMonth(); //获取月中的日
getMonth(); //获取月份
getDayOfWeek(); //获取星期
lengthOfMonth(); //获取月份的天数
isLeapYear(); //是否是周年
...

//操作LocalDate方法(一部分)
withYear(int year); //设置年
withDayOfMonth(int day); //设置日
with(ChronoFiled.MONTH_OF_YEAR,int month); //设置月份
plusWeek(int week); //添加周数
minusYears(int year); //减去year年
plus(int month,ChronoUnit.MONTHS); //修改月份
...

//比较的方法
isEqual(); //是否相等
isBefore(); //是否先于
isAfter(); //是否后于

LocalTime:提供简单的时间,不包含日期信息

//创建一个时间对象
LocalTime time = LocalTime.now(); //当前时间
LocalTime time = LocalTime.of(13,23,46); //自定义时间
LocalTime time = LocalTime.parse("13:23:46"); //解析时间
...

//获取时间的方法
getHour(); //获取小时
getMinute(); //分
getSecond(); //秒
...

//操作时间的方法
plusHour(); //小时
plusMinute(); //操作分钟
plusSecond(); //秒
...
//比较的方法
isEqual(); //是否相等
isBefore(); //是否先于
isAfter(); //是否后于
``

LocalDateTime:整合了LocalDate和LocalTime

//创建日期时间对象
LocalDateTime dateTime = LocalDateTime.now(); //当前啊日期时间
LocalDateTime dateTime = LocalDateTime.of(LocalDate.now,LocalTime.now); //指定日期时间
LocalDateTime dateTime = LocalDateTime.parse("2018-08-08 08:08:08"); //解析时间

//获取日期时间的方法
getYear(); //获取年
getDayOfMonth(); //获取月中的日
getMonth(); //获取月份
getDayOfWeek(); //获取星期
getHour(); //获取小时
getMinute(); //分
getSecond(); //秒
...

//操作日期时间的方法
withYear(int year); //设置年
withDayOfMonth(int day); //设置日
with(ChronoFiled.MONTH_OF_YEAR,int month); //设置月份
plusHour(); //小时
plusMinute(); //操作分钟
plusSecond(); //秒
...
//比较的方法
isEqual(); //是否相等
isBefore(); //是否先于
isAfter(); //是否后于
``

Duration:用于计算两个LocalTime或两个LocalDateTime之间的时间差; Peroid用于计算两个LocalDate之间的差值

Duration duration = Duration.between(LocalTime.of(12,12,12),LocalTime.now());
long second = duration.getSeconds(); //时间差
Peroid peroid = Peroid.between(LocalDate.now(),LocalDate.now());
int month = peroid.getMonth(); //getDay(),getYear() 时间差值

时间戳:Instance

Instant now = Instant.now();

总结

新的时间API提供了时间的比较,计算等类,极大的简化了时间开发。

猜你喜欢

转载自blog.csdn.net/weixin_43935907/article/details/88906600
今日推荐