java8 新时间API用法实例(LocalDate、LocalTime、LocalDateTime)

java8 新时间API用法实例(LocalDate、LocalTime、LocalDateTime)

java8之前,Date类都是可变的。在多线程环境下使用它,开发人员需考虑Date对象的线程安全。Java8新的处理时间的 API提供了线程安全的不可变类,开发人员不需要再考虑并发所带来的安全问题。

下面是一些新API的经常用到的方法,当然还有很多也常用,这里就不一一列出,有兴趣的可以看看源码,一下代码如有不正确的还望不吝赐教。

下面的例子主要从以下几个类演示用法:
LocalDate、LocalTime、LocalDateTime、DateTimeFormatter

个人体验新的时间API类比以前好用多了,谁用谁知道,尤其在时间的计算方面,灵活、简单、方便。


格式器说明
 * All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters. The following pattern letters are defined:
 * 

* Symbol Meaning Presentation Examples * ------ ------- ------------ ------- * G era text AD; Anno Domini; A * u year year 2004; 04 * y year-of-era year 2004; 04 * D day-of-year number 189 * M/L month-of-year number/text 7; 07; Jul; July; J * d day-of-month number 10 *

* Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter * Y week-based-year year 1996; 96 * w week-of-week-based-year number 27 * W week-of-month number 4 * E day-of-week text Tue; Tuesday; T * e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T * F week-of-month number 3 *

* a am-pm-of-day text PM * h clock-hour-of-am-pm (1-12) number 12 * K hour-of-am-pm (0-11) number 0 * k clock-hour-of-am-pm (1-24) number 0 *

* H hour-of-day (0-23) number 0 * m minute-of-hour number 30 * s second-of-minute number 55 * S fraction-of-second fraction 978 * A milli-of-day number 1234 * n nano-of-second number 987654321 * N nano-of-day number 1234000000 *

* V time-zone ID zone-id America/Los_Angeles; Z; -08:30 * z time-zone name zone-name Pacific Standard Time; PST * O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00; * X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15; * x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15; * Z zone-offset offset-Z +0000; -0800; -08:00; *

* p pad next pad modifier 1 *

* ' escape for text delimiter * '' single quote literal ' * [ optional section start * ] optional section end * # reserved for future use * { reserved for future use * } reserved for future use */ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; /** * Created by LHL on 2016/11/22. */ public class Demo01 { public static void main(String[] args) { LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("系统当前日期+时间:" + localDateTime); LocalDate localDate = LocalDate.now(); System.out.println("系统当期日期:" + localDate); LocalTime localTime = LocalTime.now(); System.out.println("系统当前时间:" + localTime); System.out.println("系统当前时间,去除毫秒:" + localTime.withNano(0));//0 为去除毫秒 System.out.println("指定年、月、日、时、分、秒:" + LocalDateTime.of(2016, 11, 23, 9, 07, 59));//返回一个指定年、月、日、时、分、秒的时间,不可变 System.out.println("指定年数的时间:" + localDateTime.withDayOfYear(1));//返回一个指定“一年中的天数,the day-of-year ”的时间,不可变 System.out.println("指定天数的时间:" + localDateTime.withDayOfMonth(1));//返回一个指定“一月中的天数,day-of-month ”的时间,不可变 System.out.println("指定小时数的时间:" + localTime.withHour(1));//返回一个指定“一天中的小时数,the hour-of-day ”的时间,不可变 System.out.println("指定分钟数的时间:" + localTime.withMinute(1));//返回一个指定“一小时的分钟数,the minute-of-hour ”的时间,不可变 System.out.println("指定秒数的时间:" + localTime.withSecond(1));//返回一个指定“一分钟的秒数,the second-of-minute ”的时间,不可变 System.out.println("the hour-of-day, from 0 to 23:" + localTime.getHour());//取得一天中的小时数 System.out.println("minute-of-hour, from 0 to 59:" + localTime.getMinute());//取得一小时中的分钟数 System.out.println("the second-of-minute, from 0 to 59:" + localTime.getSecond());//取的一分钟的秒数 System.out.println("the nano-of-second, from 0 to 999,999,999:" + localTime.getNano());//取得一秒钟的纳秒数 //日期运算 System.out.println("系统当前时间减去1年:" + (localDate.minusYears(1))); //看看闰年和平年的区别 LocalDateTime localDateTime1 = LocalDateTime.of(2016, 02, 29, 00, 00, 00); System.out.println("闰年减去一年:" + localDateTime1.minusYears(1));//减去一年后是平年,注意结果 System.out.println("系统当前时间减去1天:" + (localDate.minusDays(1))); System.out.println("系统当前时间减去23天:" + (localDate.minusDays(23))); System.out.println("系统当前时间加上1年:" + (localDate.plusYears(1))); System.out.println("系统当前时间加上1天:" + (localDate.plusDays(1))); System.out.println("系统当前时间加上1分钟:" + (localDateTime.plusMinutes(1))); System.out.println("系统当前时间加上1纳秒:" + (localDateTime.plusNanos(1))); System.out.println("系统当前时间加上1周:" + (localDateTime.plusWeeks(1))); System.out.println("localDateTime 转 localDate:" + localDateTime.toLocalDate()); System.out.println("localDateTime 转 localTime:" + localDateTime.toLocalTime()); //格式器 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss"); System.out.println(LocalDateTime.parse("20111123 00:00:00", dateTimeFormatter)); System.out.println(LocalDateTime.MIN);//支持的最小时间 System.out.println(LocalDateTime.MAX);//支持的最大时间 } }

你可能感兴趣的:(java,LocalDate,LocalTime)