Latest web development tutorials

Java 8 Tanggal Waktu API

Java 8 fitur baru Java 8 fitur baru


Nashorn mesin javascript.

Java 8 dengan menerbitkan baru Tanggal-Waktu API (JSR 310) untuk lebih memperkuat tanggal dan waktu pengolahan.

Dalam versi Jawa, ada tanggal dan waktu API masalah, termasuk:

  • Non-benang-aman - java.util.Date tidak thread-safe, semua tanggal kelas adalah variabel, yang merupakan salah satu yang terbesar kelas masalah Tanggal Java.

  • desain miskin - Tentukan kelas Java tanggal / waktu tidak konsisten dalam java.util dan paket java.sql memiliki tanggal kelas, selain format dan definisi kelas parsing dalam paket java.text.java.util.Date mencakup tanggal dan waktu, dan java.sql.Date hanya berisi tanggal, yang termasuk dalam paket java.sql dan tidak masuk akal. Selain dua kelas tersebut memiliki nama yang sama, yang itu sendiri adalah desain yang sangat buruk.

  • penanganan Timezone kesulitan - Tanggal kelas tidak menawarkan internasional, tidak ada waktu dukungan zona, Jawa dan java.util.TimeZone memperkenalkan kelas java.util.Calendar, tapi mereka ada semua masalah yang sama seperti dijelaskan di atas.

Java 8 dalam paketjava.time menyediakan banyak API baru.Berikut ini adalah dua dari API yang lebih penting:

  • Lokal (Local) - menyederhanakan penanganan tanggal dan waktu, tidak ada masalah zona waktu.

  • Dikategorikan (zona waktu) - tanggal Pengolahan dan waktu dengan zona waktu yang berlaku.

Paket java.time baru mencakup semua tanggal pemrosesan, waktu, tanggal / waktu, zona waktu, waktu (instants), proses (saat) dan jam (jam) operasi.


Localized tanggal dan waktu API

LOCALDATE / localtime dan daerah kelas LocalDateTime tidak diperlukan ketika berhadapan dengan kasus ini. Kode adalah sebagai berikut:

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Month;

public class Java8Tester {
   public static void main(String args[]){
      Java8Tester java8tester = new Java8Tester();
      java8tester.testLocalDateTime();
   }
	
   public void testLocalDateTime(){
	
      // 获取当前的日期时间
      LocalDateTime currentTime = LocalDateTime.now();
      System.out.println("当前时间: " + currentTime);
		
      LocalDate date1 = currentTime.toLocalDate();
      System.out.println("date1: " + date1);
		
      Month month = currentTime.getMonth();
      int day = currentTime.getDayOfMonth();
      int seconds = currentTime.getSecond();
		
      System.out.println("月: " + month +", 日: " + day +", 秒: " + seconds);
		
      LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012);
      System.out.println("date2: " + date2);
		
      // 12 december 2014
      LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);
      System.out.println("date3: " + date3);
		
      // 22 小时 15 分钟
      LocalTime date4 = LocalTime.of(22, 15);
      System.out.println("date4: " + date4);
		
      // 解析字符串
      LocalTime date5 = LocalTime.parse("20:15:30");
      System.out.println("date5: " + date5);
   }
}

Pelaksanaan script di atas, output:

$ javac Java8Tester.java 
$ java Java8Tester
当前时间: 2016-04-15T16:55:48.668
date1: 2016-04-15
月: APRIL, 日: 15, 秒: 48
date2: 2012-04-10T16:55:48.668
date3: 2014-12-12
date4: 22:15
date5: 20:15:30

zona waktu datetime API

Jika kita perlu memperhitungkan zona waktu, Anda dapat menggunakan zona tanggal dan waktu waktu API:

import java.time.ZonedDateTime;
import java.time.ZoneId;

public class Java8Tester {
   public static void main(String args[]){
      Java8Tester java8tester = new Java8Tester();
      java8tester.testZonedDateTime();
   }
	
   public void testZonedDateTime(){
	
      // 获取当前时间日期
      ZonedDateTime date1 = ZonedDateTime.parse("2015-12-03T10:15:30+05:30[Asia/Shanghai]");
      System.out.println("date1: " + date1);
		
      ZoneId id = ZoneId.of("Europe/Paris");
      System.out.println("ZoneId: " + id);
		
      ZoneId currentZone = ZoneId.systemDefault();
      System.out.println("当期时区: " + currentZone);
   }
}

Pelaksanaan script di atas, output:

$ javac Java8Tester.java 
$ java Java8Tester
date1: 2015-12-03T10:15:30+08:00[Asia/Shanghai]
ZoneId: Europe/Paris
当期时区: Asia/Shanghai

Java 8 fitur baru Java 8 fitur baru