Java 8ノート第11編(タイムゾーン付き時間または日付)


ディレクトリ:第1編:java 8第01編(LambdaとStream API初識)第2編:java 8第02編(Lambda式基礎文法)第3編:java 8第03編(関数式インタフェース、一般的な4つの関数式インタフェース)第4編:java 8第04編(メソッド参照とコンストラクタ参照)第五編:深いjava 8第05編(Stream APIの操作->作成及び中間操作)第六編:深いjava 8第06編(Stream APIの操作->終了操作)第七編:深いjava 8第07編(Stream APIの操作->規約、収集)第八編:深いjava 8第08編(Stream APIの総合練習)第9編:java 8第09編(Fork/Joinフレームワークの使用とその利点)第10編:java 8第10編(時間新特新->DateTimeFormatter解析とフォーマット)第11編:java 8第11編(時間または日付付き)第12編:java 8第12編(インタフェースのデフォルト方法と静的方法)第13編:java 8第13編(その他の新しい特性->Optionalクラス/繰り返し注釈とタイプ注釈)
Java 8第10編(タイムゾーン付き時間または日付)に深く入り込む
Java 8の新しい日時API:LocalDate、LocalTime、LocalDateTimeクラスの例は、ISO-8601カレンダシステムを使用する日付、時刻、日付、および時刻をそれぞれ示す可変のオブジェクトである.単純な日付または時刻を提供し、現在の時刻情報は含まれません.タイムゾーンに関する情報も含まれません.
注:ISO-8601カレンダーシステムは国際標準化組織が制定した現代公民の日付と時間の表示法である.
11.1 LocalDate、LocalTime、LocalDateTime
            ,       ISO-8601       、  、     。
@Test
    public void test01(){
        LocalDate date = LocalDate.now();
        System.out.println(date);

        LocalTime time = LocalTime.now();
        System.out.println("
"
+time); LocalDateTime dateTime = LocalDateTime.now(); System.out.println("
"
+dateTime); }

11.2試験例の方法
now()     ,          
of()     ,      /      
plusDays,plusWeeks,plusMonths,plusYears     LocalDate       、  、   、  
minusDays,minusWeeks,minusMonths,minusYears     LocalDate       、  、   、  
plus, minus         Duration   Period
withDayOfMonth,withDayOfYear,withMonth,withYear      、    、  、                LocalDate   
getDayOfMonth       (1-31)
getDayOfYear       (1-366)
getDayOfWeek      (     DayOfWeek   )
getMonth     ,      Month    
getMonthValue     (1-12)
getYear     
until           Period   ,     ChronoUnits    
isBefore, isAfter      LocalDate
isLeapYear        
@Test
    public void test02() throws InstantiationException, IllegalAccessException{
        // now
        LocalDate date = LocalDate.now();
        System.out.println(date);

        // of
        LocalDate date2 = LocalDate.of(2018, 04, 29);
        System.out.println("
"
+date2); // plusDays,plusWeeks,plusMonths,plusYears LocalDateTime time = LocalDateTime.now(); LocalDateTime time2 = time.plusDays(3); LocalDateTime time3 = time2.plusWeeks(3); LocalDateTime time4 = time3.plusMonths(3); LocalDateTime time5 = time4.plusYears(3); System.out.println("
"
+time); System.out.println(time2); System.out.println(time3); System.out.println(time4); System.out.println(time5); // plus, minus LocalDate date3 = LocalDate.now(); LocalDate plus = date3.plus(Period.of(01, 04, 0)); LocalDate minus = date3.minus(Duration.ZERO); System.out.println("
"
+plus); System.out.println(minus); // withDayOfMonth,withDayOfYear,withMonth,withYear LocalDate date4 = LocalDate.now(); LocalDate dayOfMonth = date4.withDayOfMonth(11); LocalDate dayOfYear = date4.withDayOfYear(20); LocalDate month = date4.withMonth(3); LocalDate year = date4.withYear(2019); System.out.println("
"
+dayOfMonth); System.out.println(dayOfYear); System.out.println(month); System.out.println(year); // getDayOfMonth,getDayOfYear,getDayOfWeek,getMonth,getMonthValue,getYear LocalDate date5 = LocalDate.now(); int dayOfMonth2 = date5.getDayOfMonth(); int dayOfYear2 = date5.getDayOfYear(); DayOfWeek dayOfWeek = date5.getDayOfWeek(); Month month2 = date5.getMonth(); int monthValue = date5.getMonthValue(); int year2 = date5.getYear(); System.out.println("
"
+dayOfMonth2); System.out.println(dayOfYear2); System.out.println(dayOfWeek); System.out.println(month2); System.out.println(monthValue); System.out.println(year2); // until LocalDate date6 = LocalDate.now(); Period until = date6.until(LocalDate.now()); System.out.println("
"
+until); // isBefore, isAfter LocalDate date7 = LocalDate.now(); LocalDate date8 = LocalDate.of(2019, 05, 22); boolean before = date7.isBefore(date8); boolean after = date7.isAfter(date8); System.out.println("
"
+before); System.out.println(after); // isLeapYear LocalDate date9 = LocalDate.now(); boolean year3 = date9.isLeapYear(); System.out.println("
"
+year3); }

11.3 Instantタイムスタンプ
Instantは主に「タイムスタンプ」の演算に使用されます.Unix元年(従来のUTCタイムゾーン設定では1970年1月1日午前0時)から経験した記述で演算される.
@Test
    public void test03(){
        Instant instant = Instant.now();
        System.out.println(instant);

        //                 OffsetDateTime
        OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
        System.out.println("
"
+offsetDateTime); // 。 int nano = instant.getNano(); System.out.println("
"
+nano); // 1970-01-01T00:0000Z Instant Instant epochSecond = Instant.ofEpochSecond(3); System.out.println("
"
+epochSecond); // Instant 1970-01-01T00 :0000Z Instant epochMilli = Instant.ofEpochMilli(3); System.out.println("
"
+epochMilli); }

11.4 DurationとPeriod
Duration:      “  ”  
Period:      “  ”  
@Test
    public void test04(){
        Instant now = Instant.now();
        //             
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Instant now2 = Instant.now();
        //      Duration               
        Duration duration = Duration.between(now, now2);
        System.out.println(duration.getSeconds());

        LocalDate localDate = LocalDate.now();
        LocalDate localDate2 = LocalDate.of(2008, 11, 27);
        //     Period ,          ,       
        Period period = Period.between(localDate2, localDate);
        System.out.println("
"
+period.getYears()); // System.out.println(period.getMonths()); // 。 System.out.println(period.getDays()); // 。 }

11.5 TemporalAdjuster:時間補正器
            :      “    ”   。
@Test
    public void test05(){
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);

        //           
        LocalDateTime dayOfMonth = localDateTime.withDayOfYear(3);
        System.out.println("
"
+dayOfMonth); // , LocalDateTime dateTime = localDateTime.with(TemporalAdjusters.next(DayOfWeek.FRIDAY)); System.out.println("
"
+dateTime); // : LocalDateTime localDateTime3 = localDateTime.with((date) -> { LocalDateTime localDateTime2 = (LocalDateTime) date; DayOfWeek dayOfWeek = localDateTime2.getDayOfWeek(); if(dayOfWeek.equals(DayOfWeek.FRIDAY)){ return localDateTime2.plusDays(3); }else if(dayOfWeek.equals(DayOfWeek.SATURDAY)){ return localDateTime2.plusDays(2); }else{ return localDateTime2.plusDays(1); } }); System.out.println("
"
+localDateTime3)
; }

11.6 DateTimeFormatter:解析とフォーマット
             :
       , ISO_LOCAL_DATE
       , uuuu-MMM-dd
        , long medium
@Test
    public void test06(){
        LocalDateTime dateTime = LocalDateTime.now();

        //        
        DateTimeFormatter isoLocalDate = DateTimeFormatter.ISO_LOCAL_DATE;
        String str = dateTime.format(isoLocalDate);
        System.out.println(str);

        //          
        DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("yyyy MM dd  HH:mm:ss E");
        String str1 = dateTime.format(ofPattern);
        System.out.println("
"
+str1); // LocalDateTime localDateTime = LocalDateTime.parse(str1, ofPattern); System.out.println("
"
+localDateTime); }

11.7.1タイムゾーンの処理01
ZoneId:             :
getAvailableZoneIds() :           
of(id) :            ZoneId   
    @Test
    public void test07(){
        //         
        ZoneId.getAvailableZoneIds()
        .forEach(System.out::println);
    }

11.7.2タイムゾーンの処理02
Java8           ,          :
ZonedDate、ZonedTime、ZonedDateTime
           ID,  ID   “{  }/{  }”   
   :Asia/Shanghai  
@Test
    public void test08(){
        //                    
        ZonedDateTime zonedDateTime = ZonedDateTime.now();
        System.out.println(zonedDateTime);

        //     
        ZoneId zone = zonedDateTime.getZone();
        System.out.println("
"
+zone); // ZonedDateTime zonedDateTime2 = ZonedDateTime.now(ZoneId.of("Asia/Shanghai")); System.out.println("
"
+zonedDateTime2); // LocalDateTime localDateTime = LocalDateTime.now(ZoneId.of("Asia/Colombo")); System.out.println("
"
+localDateTime); }

ソースのダウンロードアドレス:https://download.csdn.net/download/hello_world_qwp/10401249はトップページに戻ります.https://blog.csdn.net/Hello_World_QWP/article/details/80245129