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

来源:互联网 发布:mac如何删除软件 编辑:程序博客网 时间:2024/06/08 04:56

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: * <p> * 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 * <p> * 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 * <p> * 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 * <p> * 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 * <p> * 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> * p       pad next                    pad modifier      1 * <p> * '       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);//支持的最大时间    }}
0 0
原创粉丝点击