jdk8带来了新的时间工具类,主要有LocalDateTime(时间+日期) ,LocalDate(日期) 以及LocalTime(时间)。下面来看看经常使用用法在新的工具类上如何使用。bash
LocalDateTime.now()
LocalDate.now()
LocalTime.now()
复制代码
获取当前时间很简单,直接调用now方法就能够,上述代码运行结果以下工具
2019-08-23T16:17:18.439679
2019-08-23
16:17:18.441228
复制代码
1 获取utc标准时间post
LocalDateTime.now(ZoneId.of("UTC"))
LocalDate.now(ZoneId.of("UTC"))
LocalTime.now(ZoneId.of("UTC"))
复制代码
运行结果以下spa
2019-08-23T08:20:34.065057
2019-08-23
08:20:34.065973
复制代码
能够看出比第一次运行的时候少了8个小时,由于北京时间是东8区,因此会比utc标准时间多上8个小时。3d
2 根据utc为标准获取其余时区时间code
LocalDateTime.now(ZoneId.of("+7"))
LocalDate.now(ZoneId.of("+7"))
LocalTime.now(ZoneId.of("+7"))
复制代码
根据utc标准获取其余时区时间很简单,东区就+,西区就-;orm
1 格式化时间字符串
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now())
DateTimeFormatter.ofPattern("yyyy_MM_dd").format(LocalDate.now())
DateTimeFormatter.ofPattern("HHmmss").format(LocalTime.now())
复制代码
DateTimeFormatter是定义时间格式的工具类。三个类均可以使用,可是要注意LocalDate不要定义时间格式,LocalTime不要定义日期格式,不然会报错。get
2 格式化字符串转时间string
LocalDateTime.parse("20190801000000", DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
复制代码
LocalDateTime.of(2018, 8, 13, 23, 56, 2)
复制代码
根据年月日时分秒能够直接新建时间,很是方便。
1.时间转时间戳
LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()
复制代码
2.时间戳转时间
LocalDateTime.ofInstant(Instant.ofEpochMilli(1566550144837L), ZoneId.systemDefault())
复制代码
1.获取一个某个时间的年月日时分秒属性
LocalDateTime now = LocalDateTime.now();
now.getYear();
now.getMonth();
now.getDayOfMonth();
now.getDayOfYear();
now.getDayOfWeek();
now.getHour();
now.getMinute();
now.getSecond();
复制代码
2.计算某个日期的增减
LocalDateTime now = LocalDateTime.now();
//增长一年
now.plusYears(1);
//减小一年
now.minusYears(1);
//增长一月
now.plusMonths(1);
//减小一月
now.minusMonths(1);
.......
复制代码
3.计算两个日期之间的差值
LocalDateTime time1 = LocalDateTime.of(2019, 8, 31, 0, 0);
LocalDateTime time2 = LocalDateTime.of(2019, 7, 31, 0, 0);
System.out.println(time1.until(time2,ChronoUnit.DAYS));
result : -31
复制代码
很方便就能够计算出两个日期之间相差的天数,想要计算其余值也是同样。
4.计算这个地方留个小彩蛋吧
LocalDateTime time2 = LocalDateTime.now().minusDays(1);
LocalDateTime time1 = LocalDateTime.now();
System.out.println(time2.until(time1,ChronoUnit.DAYS));
-----------
LocalDateTime time1 = LocalDateTime.now();
LocalDateTime time2 = LocalDateTime.now().minusDays(1);
System.out.println(time2.until(time1,ChronoUnit.DAYS));
复制代码
看看两个计算出的结果,和你想的一不同呢。