zoukankan      html  css  js  c++  java
  • java8日期相关类的由来和概述(熟悉)

    1、java8日期的由来

      JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引入Calendar类之后被
    弃用
    了。而Calendar并不比Date好多少。它们面临的问题是:
      Date类中的年份是从1900开始的,而月份都从0开始。
      格式化只对Date类有用,对Calendar类则不能使用。
      非线程安全等。

    2、java8日期类的概念

    Java 8通过发布新的Date-Time API来进一步加强对 日期与时间的处理。
    java.time包:该包日期/时间API的基础包。
    java.time.chrono包:该包提供对不同日历系统的访问。
    java.time.format包:该包能够格式化和解析日期时间对象。
    java.time.temporal包:该包包含底层框架和扩展特性。
    java.time.zone包:该包支持不同时区以及相关规则的类。

    日期时间对象创建和特征获取

    LocalDate类的概述

    1、基本概念

    java.time.LocalDate类主要用于描述年-月-日格式的日期信息,该类不表示时间和时区信息。

    2、常用的方法

    LocalTime类的概述

    1、基本概念

    java.time.LocalTime 类主要用于描述时间信息,可以描述时分秒以及纳秒。

    2、常用的方法

    LocalDateTime类的概念

    1、基本概念

    java.time.LocalDateTime类主要用于描述ISO-8601日历系统中没有时区的日期时间,如2007-12-
    03T10:15:30。

    2、常用的方法 

     各类中的now()方法,以及常用的LocalDateTime类获取特征

    package com.lagou.task13;
    
    import java.time.LocalDate;
    import java.time.LocalDateTime;
    import java.time.LocalTime;
    
    public class LocalDateTimeTest {
        public static void main(String[] args) {
            //  1.获取当前日期信息并打印
            LocalDate now = LocalDate.now();
            System.out.println("获取到的当前时间是:"+now);
            //  2.获取当前时间信息并打印
            LocalTime now1 = LocalTime.now();
            System.out.println("获取到的当前日期是:"+now1);
            //  3.获取当前日期时间信息并打印,使用最多
            LocalDateTime now2 = LocalDateTime.now();
            System.out.println("获取到的当前日期时间是:"+now2);
    
            System.out.println("---------------------------------");
            //  4.使用参数指定的年月日时分秒信息来获取对象并打印
            //  使用ctrl+f12来查找指定的方法
            LocalDateTime of = LocalDateTime.of(2008, 8, 8, 8, 8, 8);
            System.out.println("指定的日期时间是:"+of);
            System.out.println("获取到的年份是:"+of.getYear());
            System.out.println("获取到的月份是:"+of.getMonthValue());
            System.out.println("获取到的日期是:"+of.getDayOfMonth());
            System.out.println("获取到的小时是:"+of.getHour());
            System.out.println("获取到的分钟是:"+of.getMinute());
            System.out.println("获取到的秒是:"+of.getSecond());
        }
    }

    lacaldatetime类的增加减少方法

     System.out.println("---------------------------------");
            //  5.实现特征的设置并打印
            //  与String类型相似,调用对象本身的数据内容不会改变,返回值相当于创建了一个新的对象,由此证明了不可变性
            LocalDateTime localDateTime = of.withYear(2012);    //  修改年份
            System.out.println("修改前的年份是:"+of.getYear());
            System.out.println("修改后的年份是"+localDateTime);
            LocalDateTime localDateTime1 = localDateTime.withMonth(12);   //  修改月份
            System.out.println("修改前的月份是"+of.getMonthValue());
            System.out.println("修改后的月份是"+localDateTime1);
    
            System.out.println("---------------------------------");
            //  6.实现特征的增加并打印
            LocalDateTime localDateTime2 = localDateTime1.plusDays(2);  //  增加日
            System.out.println("原始时间"+localDateTime1);
            System.out.println("修改后的时间:"+localDateTime2);
            LocalDateTime localDateTime3 = localDateTime2.plusHours(3); //  增加小时
            System.out.println("原始时间"+localDateTime2);
            System.out.println("修改后的时间:"+localDateTime3);
    
            System.out.println("---------------------------------");
            //  7.实现特征的减少并打印
            LocalDateTime localDateTime4 = localDateTime3.minusMinutes(1);  //  减少1分钟
            System.out.println("原始时间"+localDateTime3);
            System.out.println("修改后的时间:"+localDateTime4);
            LocalDateTime localDateTime5 = localDateTime3.minusSeconds(3);  //  减少3秒钟
            System.out.println("原始时间"+localDateTime3);
            System.out.println("修改后的时间:"+localDateTime5);

    Instant类的概念和使用

    1、基本概念

    java.time.Instant类主要用于描述瞬间的时间点信息。

    2、常用的方法

    package com.lagou.task13;
    
    import java.time.Instant;
    import java.time.OffsetDateTime;
    import java.time.ZoneOffset;
    
    public class InstantTest {
        public static void main(String[] args) {
            //  1.使用instant类来获取当前系统时间   并不是当前系统的默认时区    本初子午线   我们在东八区差8小时
            Instant now = Instant.now();
            System.out.println("获取到的当前时间为:"+now);
    
            System.out.println("--------------------------------------------------");
            //  2.加上时区所差的8小时
            OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));
            System.out.println("偏移后的日期时间为:"+offsetDateTime);
    
            System.out.println("--------------------------------------------------");
            //  3.获取当前调用对象距离标准基准时间的毫秒数
            long g1 = now.toEpochMilli();
            System.out.println("获取到的毫秒差为:" + g1);   //  获取到的毫秒数也是差8个小时
    
            //  4.根据参数指定的毫秒数来构造对象
            Instant instant = Instant.ofEpochMilli(g1);
            System.out.println("根据参数指定的毫秒数构造出来的对象为:"+instant);
    
        }
    }

     DateTimeFormatter类的概述

    1、基本概念

    java.time.format.DateTimeFormatter类主要用于格式化和解析日期。

    2、常用的方法

    package com.lagou.task13;
    
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.TemporalAccessor;
    
    public class DateTimeFormatterTest {
        public static void main(String[] args) {
            //  1.获取当前系统的日期时间并打印
            LocalDateTime now = LocalDateTime.now();    //  创建时间对象
            System.out.println("now="+now);
            //  2.按照指定的格式准备一个DateTimeFormatter类型的对象
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");   //  创建对象
            //  3.实现日期时间向字符串类型的转换并打印
            String format = dateTimeFormatter.format(now);
            System.out.println("调整后的结果是:"+format);
            //  4.实现字符串类型到日期时间类型的转换并打印
            TemporalAccessor parse = dateTimeFormatter.parse(format);
            System.out.println("转回去的结果是:"+parse);
        }
    }
  • 相关阅读:
    题目1007:奥运排序问题(自定义排序问题)
    题目1005:Graduate Admission(录取算法)
    九度OJ小结2
    题目1049:字符串去特定字符(简单字符判断)
    题目1111:单词替换(字符串查找)
    题目1168:字符串的查找删除(字符串操作)
    题目1455:珍惜现在,感恩生活(多重背包问题)
    题目1454:Piggy-Bank(完全背包问题)
    题目1453:Greedy Tino(dp题目)
    题目1452:搬寝室(dp题目)
  • 原文地址:https://www.cnblogs.com/xujiaqi/p/13927235.html
Copyright © 2011-2022 走看看