JDK1.8 时间日期组件
来源:互联网 发布:java环境变量配置linux 编辑:程序博客网 时间:2024/05/16 14:31
Instant
Instant本质上是一个数字时间戳,底层实际上是对System.currentTimeMillis()进行了包装。
Instant now = Instant.now();System.out.println(now.toString());// 毫秒System.out.println(now.get(ChronoField.MILLI_OF_SECOND));// 微秒,只是用毫秒数除以1000System.out.println(now.get(ChronoField.MICRO_OF_SECOND));// 纳秒,只是用毫秒数除以1000_000System.out.println(now.get(ChronoField.NANO_OF_SECOND));// 毫秒转InstantLocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());// 2018-06-16T23:12:01System.out.println(localDateTime);
LocalDate
LocalDate格式:2017-06-04,类似于java.sql.Date,不包含时间。1.8之前的java.lang.Date是包含时间的,所以从结构上看,1.8之前的设计有些糟糕。
// 获得当前日期LocalDate now = LocalDate.now();System.out.println(now.toString());// 日期加上1天LocalDate localDate2 = now.plusDays(1);System.out.println(localDate2.toString());// 日期加上一周LocalDate localDate3 = now.plusWeeks(1);System.out.println(localDate3);// 计算当前年的第52天是几月几号System.out.println("今年的第52天 = " + now.withDayOfYear(52));// 字符串转日期DateTimeFormatter strToDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");TemporalAccessor dateTemporal = strToDateFormatter.parse("2017-01-01");LocalDate date = LocalDate.from(dateTemporal);System.out.println(date);// 格式化日期DateTimeFormatter dateToStrFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");String dateStr = dateToStrFormatter.format(now);System.out.println(dateStr);
// 取当前日期:LocalDate today = LocalDate.now(); // -> 2014-12-24// 根据年月日取日期:LocalDate crischristmas = LocalDate.of(2014, 12, 25); // -> 2014-12-25// 根据字符串取:LocalDate endOfFeb = LocalDate.parse("2014-02-28"); // 严格按照ISO yyyy-MM-dd验证,02写成2都不行,当然也有一个重载方法允许自己定义格式LocalDate.parse("2014-02-29"); // 无效日期无法通过:DateTimeParseException: Invalid date// 取本周周一:LocalDate today = LocalDate.now().with(DayOfWeek.MONDAY);// 取本月第1天:LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2017-03-01// 取本月第2天:LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2017-03-02// 取本月最后一天,再也不用计算是28,29,30还是31:LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2017-12-31// 取下一天:LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); // 变成了2018-01-01// 取2017年1月第一个周一,用Calendar要死掉很多脑细胞:LocalDate firstMondayOf2015 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2017-01-02
LocalTime
LocalTime格式为13:01:02.221,在只需要处理时间的场景下,它变得非常有用。
LocalTime localTime = LocalTime.now();System.out.println("local time = " + localTime);System.out.println("plus 12 hours = " + localTime.plusHours(12));
LocalDateTime
LocalDateTime本质上有LocalDate和LocalTime组成。
// 获得当前日期时间LocalDateTime now = LocalDateTime.now();System.out.println(now);// 字符串转日期时间。DateTimeFormatter strToDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");TemporalAccessor dateTemporal = strToDateFormatter.parse("2017-01-01 12:12:13");LocalDate date = LocalDate.from(dateTemporal);System.out.println(date);// 格式化日期时间DateTimeFormatter dateToStrFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");String dateStr = dateToStrFormatter.format(now);System.out.println(dateStr);
Period
Period代表的是两个日期之间的天、月、年数差值,当然,我们也可以直接使用日期中的until方法来完成同样的效果。
LocalDate startDate = LocalDate.now();LocalDate endDate = startDate.plusDays(1);Period period = Period.between(startDate, endDate);System.out.println("间隔的天数" + period.getDays());System.out.println("间隔的月数:" + period.getMonths());System.out.println("间隔的年数:" + period.getYears());// 直接使用日期类中的方法计算日期间隔long days = startDate.until(endDate, ChronoUnit.DAYS);System.out.println("间隔的天数:" + days);long weeks = startDate.until(endDate, ChronoUnit.WEEKS);System.out.println("间隔的周数:" + weeks);
Duration
Duration表示的是两个日期时间间隔的秒以及纳秒数。
LocalDateTime start = LocalDateTime.now();LocalDateTime end = start.plusDays(1);Duration duration = Duration.between(start, end);System.out.println("间隔的秒数:" + duration.get(ChronoUnit.SECONDS));System.out.println("间隔的纳秒数:" + duration.get(ChronoUnit.NANOS));
阅读全文
0 0
- jdk1.8日期时间组件
- JDK1.8 时间日期组件
- 时间/日期组件使用
- jdk1.8日期
- Android - 时间 日期相关组件
- JDK1.8时间接口
- 日期与时间组件 进度条组件
- jdk1.8日期util类
- 日期时间选择器 Bootstrap日期和时间表单组件。
- Swing 写的日期时间组件
- android学习笔记(十二)日期、时间组件
- android中的日期和时间组件
- Swing 写的日期时间组件
- ionic之时间&日期组件实例
- 安卓界面组件----时间日期选择器
- android学习笔记(十二)日期、时间组件
- 时间日期操作组件joda 简单体验
- 5.3.3 日期/时间组件方法
- pandas删除和插入数据
- 【Spring】对象依赖关系
- 关于ESP8266使用ArduinoIDE编程,调用airkiss_lan_recv和airkiss_lan_pack出错的解决方法
- 回文质数
- 深入理解JVM之JVM内存区域与内存分配
- JDK1.8 时间日期组件
- 简单的词法分析器的实现
- 【网络编程】TCP异常断开处理方法
- 从0开始入门机器学习|python及库的安装
- Ubuntu下jdk+mysql+tomcat的安装
- Redhat版本linux基础学习
- 特性和反射
- 2-Add Two Numbers
- xml配置文件---ssm完美整合(学习笔记)