Jadual Kandungan
设计原则:" >新Date类和Time类背后的设计原则
接下来让我们来看看新Date和Time API:
Rumah Java javaTutorial Java8中新的Date和Time类入门详解

Java8中新的Date和Time类入门详解

Mar 31, 2017 am 11:12 AM

这篇文章主要是java8中新的DateTime API的实战。新的Date和Time类是java开发者社区千呼万唤始出来的。Java8 之前存在的Date类一直都受人诟病,很多人都会选择使用第三方的date库joda-time。Java8中的date和time api是jodatime的作者参与开发的,实现了JSR310的全部内容。这些新的api都在包java.time下。

既然第三方的joda-time,date4j都已经足够强大了,为什么java8还要重新实现他呢,一部分的原因是这些第三方的库是存在兼容问题的,比如标准的JSF日期转化器与joda-time api,就不兼容,每次使用都需要编写自己的转换器,所以标准化api是必须的,就有了JSR310,java8中就实现了他全部的规定内容。

新Date类和Time类背后的设计原则

不可变类

java8之前,Date类都是可变类。当我们在多线程环境下使用它,编程人员应该确认Date对象的线程安全。Java8的Date和Time API提供了线程安全的不可变类。编程人员不用考虑并发的问题。

领域模型驱动设计方法

新的日期和时间的类别遵循“域驱动设计”。对于开发者来说,理解方法和类的功能是很容易的。

接下来让我们来看看新Date和Time API:

java.time.LocalDate:

LocalDate只提供日期不提供时间信息。它是不可变类且线程安全的。

package org.smarttechie;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
* */
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Create date LocalDate localDate = LocalDate.now();
    System.out.println("The local date is :: " + localDate); 
   //Find the length of the month. That is, how many days are there for this month.
   System.out.println("The number of days available for this month:: " + localDate.lengthOfMonth()); 
   //Know the month name
   System.out.println("What is the month name? :: " + localDate.getMonth().name()); 
   //add 2 days to the today's date.
   System.out.println(localDate.plus(2, ChronoUnit.DAYS)); 
   //substract 2 days from today
   System.out.println(localDate.minus(2, ChronoUnit.DAYS)); 
   //Convert the string to date
   System.out.println(localDate.parse("2017-04-07"));
  }
}
Salin selepas log masuk

java.time.LocalTime:

LocalTime只提供时间而不提供日期信息,它是不可变类且线程安全的。

package org.smarttechie;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
* */
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Get local time
   LocalTime localTime = LocalTime.now();
   System.out.println(localTime);
  //Get the hour of the day
  System.out.println("The hour of the day:: " + localTime.getHour());
  //add 2 hours to the time.
  System.out.println(localTime.plus(2, ChronoUnit.HOURS));
  //add 6 minutes to the time.
  System.out.println(localTime.plusMinutes(6));
  //substract 2 hours from current time
  System.out.println(localTime.minus(2, ChronoUnit.HOURS));
 }
}
Salin selepas log masuk

java.time.LocalDateTime:

LocalDateTime提供时间和日期的信息,它是不可变类且线程安全的

package orr.smarttechie;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
    //Get LocalDateTime object
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime);
    //Find the length of month. That is, how many days are there for this month.
    System.out.println("The number of days available for this month:: " + localDateTime.getMonth().length(true));
    //Know the month name
    System.out.println("What is the month name? :: " + localDateTime.getMonth().name());
    //add 2 days to today's date.
    System.out.println(localDateTime.plus(2, ChronoUnit.DAYS));
    //substract 2 days from today
    System.out.println(localDateTime.minus(2, ChronoUnit.DAYS));
  }
}
Salin selepas log masuk

java.time.Year:

Year提供年的信息,它是不可变类且线程安全的。

package orr.smarttechie;
import java.time.Year;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   //Get year
   Year year = Year.now();
   System.out.println("Year ::" + year);
   //know the year is leap year or not
   System.out.println("Is year[" +year+"] leap year?"+ year.isLeap());
  }
}
Salin selepas log masuk

java.time.Duration:

Duration是用来计算两个给定的日期之间包含多少秒,多少毫秒,它是不可变类且线程安全的

java.time.Period:

Period是用来计算两个给定的日期之间包含多少天,多少月或者多少年,它是不可变类且线程安全的

package orr.smarttechie;
import java.time.LocalDate;
import java.time.Period;
import java.time.temporal.ChronoUnit;
/**
* This class demonstrates JAVA 8 data and time API
* @author Siva Prasad Rao Janapati
*
*/
public class DateTimeDemonstration {
/**
* @param args
*/
public static void main(String[] args) {
   LocalDate localDate = LocalDate.now();
   Period period = Period.between(localDate, localDate.plus(2, ChronoUnit.DAYS));
   System.out.println(period.getDays());
  }
}
Salin selepas log masuk


Atas ialah kandungan terperinci Java8中新的Date和Time类入门详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengira tarikh setahun yang lalu atau setahun kemudian di Java 8? Bagaimana untuk mengira tarikh setahun yang lalu atau setahun kemudian di Java 8? Apr 26, 2023 am 09:22 AM

Java8 mengira tarikh setahun yang lalu atau setahun kemudian menggunakan kaedah tolak() untuk mengira tarikh setahun yang lalu packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDatepreviousYear=today.minus(1,ChronoUni

Amaran PHP: date() menjangkakan parameter 2 panjang, penyelesaian diberikan rentetan Amaran PHP: date() menjangkakan parameter 2 panjang, penyelesaian diberikan rentetan Jun 22, 2023 pm 08:03 PM

Apabila membangunkan menggunakan program PHP, anda sering menghadapi beberapa amaran atau mesej ralat. Antaranya, satu mesej ralat yang mungkin muncul ialah: PHPWarning:date()expectsparameter2tobelong,stringgiven. Mesej ralat bermaksud: parameter kedua bagi tarikh fungsi() dijangka menjadi integer panjang (panjang), tetapi yang sebenarnya dihantar kepadanya ialah rentetan (rentetan). Jadi, kita

Cara membuat dan menamakan fail/folder berdasarkan cap masa semasa Cara membuat dan menamakan fail/folder berdasarkan cap masa semasa Apr 27, 2023 pm 11:07 PM

Jika anda sedang mencari cara untuk membuat dan menamakan fail dan folder secara automatik berdasarkan cap masa sistem, anda telah datang ke tempat yang betul. Terdapat cara yang sangat mudah untuk menyelesaikan tugas ini. Folder atau fail yang dibuat kemudiannya boleh digunakan untuk pelbagai tujuan seperti menyimpan sandaran fail, menyusun fail berdasarkan tarikh, dsb. Dalam artikel ini, kami akan menerangkan dalam beberapa langkah yang sangat mudah cara membuat fail dan folder secara automatik dalam Windows 11/10 dan menamakannya mengikut cap masa sistem. Kaedah yang digunakan adalah skrip kelompok, yang sangat mudah. Harap anda seronok membaca artikel ini. Bahagian 1: Cara membuat dan menamakan folder secara automatik berdasarkan cap masa semasa sistem Langkah 1: Mula-mula, navigasi ke folder induk tempat anda ingin mencipta folder,

Pemprosesan jam monotonik pakej masa Pemprosesan jam monotonik pakej masa Aug 04, 2023 pm 05:45 PM

Hari ini kita akan melihat kaedah penggunaan masa pakej masa golang. Peraturan umum antara kedua-duanya ialah "masa dinding" digunakan untuk memberitahu masa, dan "jam monotonik" digunakan untuk mengukur masa terdapat kaedah pemprosesan jam lain.

Bagaimana untuk mendapatkan perwakilan milisaat tarikh menggunakan kaedah getTime() kelas Tarikh Bagaimana untuk mendapatkan perwakilan milisaat tarikh menggunakan kaedah getTime() kelas Tarikh Jul 24, 2023 am 11:42 AM

Bagaimana untuk mendapatkan perwakilan milisaat tarikh menggunakan kaedah getTime() kelas Tarikh Dalam Java, kelas Tarikh ialah kelas yang digunakan untuk mewakili tarikh dan masa. Ia menyediakan banyak kaedah berguna untuk memanipulasi dan mendapatkan maklumat tentang objek tarikh. Antaranya, kaedah getTime() ialah kaedah penting dalam kelas Date, yang boleh mengembalikan perwakilan milisaat objek tarikh. Seterusnya, kami akan memperincikan cara menggunakan kaedah ini untuk mendapatkan perwakilan milisaat tarikh, dan memberikan contoh kod yang sepadan. Menggunakan kelas Tarikh

Pengenalan kepada kaedah dan penggunaan menggunakan kelas Date dan SimpleDateFormat untuk memproses masa dalam Java Pengenalan kepada kaedah dan penggunaan menggunakan kelas Date dan SimpleDateFormat untuk memproses masa dalam Java Apr 21, 2023 pm 03:01 PM

1. Pengenalan Kelas Tarikh dalam pakej java.util mewakili masa tertentu, tepat kepada milisaat. Jika kita ingin menggunakan kelas Date kita, maka kita mesti memperkenalkan kelas Date kita. Menulis tahun terus ke dalam kelas Tarikh tidak akan menghasilkan hasil yang betul. Oleh kerana Date in Java dikira dari 1900, jadi selagi anda mengisi parameter pertama dengan bilangan tahun sejak 1900, anda akan mendapat tahun yang anda inginkan. Bulan perlu ditolak dengan 1, dan hari boleh dimasukkan terus. Kaedah ini jarang digunakan, dan kaedah kedua biasa digunakan. Kaedah ini adalah untuk menukar rentetan yang mematuhi format tertentu, seperti yyyy-MM-dd, kepada data jenis Tarikh. Mula-mula, tentukan objek jenis Date Date

Bagaimana untuk mengira tarikh seminggu kemudian menggunakan Java 8? Bagaimana untuk mengira tarikh seminggu kemudian menggunakan Java 8? Apr 21, 2023 pm 11:01 PM

Cara mengira tarikh seminggu kemudian dalam Java8 Contoh ini akan mengira tarikh seminggu kemudian. Tarikh LocalDate tidak mengandungi maklumat masa kaedah tambah() digunakan untuk menambah hari, minggu dan bulan Kelas ChronoUnit mengisytiharkan unit masa ini. Memandangkan LocalDate juga merupakan jenis yang tidak boleh diubah, anda mesti menggunakan pembolehubah untuk menetapkan nilai selepas kembali. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

Cara menggunakan kelas Stringbuild, Date dan Calendar dalam Java Cara menggunakan kelas Stringbuild, Date dan Calendar dalam Java May 22, 2023 pm 04:52 PM

Kelas Stringbuild Memandangkan kandungan objek kelas String tidak boleh diubah, objek String baharu akan dibina setiap kali ia disambung, yang memakan masa dan membazirkan ruang memori Pada masa ini, anda perlu menyelesaikan masalah ini melalui StringBuild kelas yang disediakan oleh Java StringBuilder juga dipanggil jujukan aksara pembolehubah , ia adalah penimbal rentetan yang serupa dengan String, yang boleh dianggap sebagai bekas yang boleh disimpan dalam bekas adalah berubah-ubah. Kaedah pembinaan publicStringBuilder(): mencipta penimbal kosong publicStringBuilder(Stringsr

See all articles