JAVA 8 新时间 API java.time 使用简介
2017-07-13 23:16
501 查看
JAVA 8 引入新时间API原因是原来的Date类无法支持多线程操作,新时间API支持多线程操作,当java.time包内时间类其值发生改变时,其如同String类,类的实例是不可变的对象,当改变其值的时候就会新生成对象地址,从而改变其对象地址,以保证支持多线程操作。
Instant 时间戳 在时间线上的瞬间点 在ISO- 2007-12-03T10:15:30
-> 2007-12-03T10:15:30 .000Z。
<自己使用的日期时间>
LocalDate 在ISO- 2007-12-03 -> 2007-12-03 。
LocalDateTime 在ISO- 2007-12-03T10:15:30 -> 2007-12-03T10:15:30 。
LocalTime 在ISO- 10:15:30 -> 10:15:30 。
Duration 和Period
Duration:用于计算两个“时间”间隔
Period:用于计算两个“日期”间隔
新的java.time包内类默认均采用ISO-8601时区标准
<给计算机看的时间>Instant 时间戳 在时间线上的瞬间点 在ISO- 2007-12-03T10:15:30
-> 2007-12-03T10:15:30 .000Z。
<自己使用的日期时间>
LocalDate 在ISO- 2007-12-03 -> 2007-12-03 。
LocalDateTime 在ISO- 2007-12-03T10:15:30 -> 2007-12-03T10:15:30 。
LocalTime 在ISO- 10:15:30 -> 10:15:30 。
Duration 和Period
Duration:用于计算两个“时间”间隔
Period:用于计算两个“日期”间隔
package java8.time; import java.time.Duration; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.Period; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Locale; import java.util.Set; import org.junit.Test; public class Demo { /** * 计算时间差 */ @Test public void test1() { Instant time1 = Instant.now(); // 获取系统当前 System.out.println(time1); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Instant time2 = Instant.now();// 获取休眠后系统时间 Duration duration = Duration.between(time1, time2); // 计算两个时间的差值 System.out.println(duration.toMillis()); } @Test public void test2() { LocalDateTime time1 = LocalDateTime.now(); System.out.println(time1); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } LocalDateTime time2 = LocalDateTime.now(); Duration duration = Duration.between(time1, time2); System.out.println(duration.toMillis()); } /* * 计算两日期相差时间 */ @Test public void test3() { LocalDate date1 = LocalDate.now(); LocalDate date2 = date1.plusDays(5); Period period = Period.between(date1, date2); System.out.println(period.getDays()); } /* * 输入指定日期 按照指定日期格式输出 默认采用ISO-8601日历系统 */ @Test public void test4() { LocalDateTime time = LocalDateTime.of(1997, 06, 13, 12, 59, 0); time = time.plusMinutes(1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd : hh:mm:ss"); String formatTime = formatter.format(time); System.out.println(formatTime); } /* * 修改默认日期格式 */ @Test public void test5() { // 获取所有日期格式 Set<String> set = ZoneId.getAvailableZoneIds(); // 获取所有亚洲国家时区 set.stream().filter(e -> e.startsWith("Asia")).forEach(System.out::println); LocalDateTime time = LocalDateTime.now(ZoneId.of("Asia/Hong_Kong")); // format 第二个参数 指定国家 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd : hh:mm:ss", Locale.CHINA); System.out.println(formatter.format(time)); System.out.println(time); } }
相关文章推荐
- LocalDate LocalTime LocalDateTime DateTimeFormatter Java 8 新出的时间(time)和日期(date)的API的使用详细实例
- Android 系列 2.11使用Java 8 java.time API简化日期/时间计算
- Java使用new Date()和System.currentTimeMillis()获取当前时间戳
- java使用new Date()和System.currentTimeMillis()获取当前时间戳
- 使用Java 8 的日期和时间Api
- Java8 日期/时间(Date Time)使用简介
- 如何在原来的项目中使用java8的时间api
- Java8新日期时间API的20个使用示例
- 【转】JAVA 8 日期/时间(Date Time)API指南
- redmine-java-api的使用方法简介
- Java中使用new Date()和System.currentTimeMillis()获取当前时间戳的区别(转)(Java进阶-性能提升)
- Java8 日期/时间(Date Time)API指南
- Java进阶(十六)使用new Date()和System.currentTimeMillis()获取当前时间戳
- Java8学习笔记(九)--日期/时间(Date Time)API指南
- Java中的时间精度 .System.currentTimeMillis() 、System.nanoTime() 方法 使用
- java使用new Date()和System.currentTimeMillis()获取当前时间戳(转载)
- Java8 日期/时间(Date Time)API指南
- Java 8 新特性:Java 类库的新特性之日期时间API (Date/Time API )
- java使用System.currentTimeMillis()获取当前时间戳而不要用new Date()
- Java 8系列(一): 日期/时间- JSR310( Date and Time API)