1.LocalDateTime

該類結合了和類LocalDateTime的功能:它存儲日期和時間。它的對像也是不可變的,它的方法類似於和類的方法。LocalDateLocalTimeLocalDateLocalTime

獲取當前日期和時間

一切都如您所料:我們使用now()方法。例子:

代碼 控制台輸出
LocalDateTime time = LocalDateTime.now();
System.out.println("Now = " + time);

Now = 2019-02-22T09:49:19.275039200

在屏幕上顯示時,日期和時間以字母 分隔T

獲取特定日期和時間

不出所料,一切都類似於LocalDateLocalTime類——我們使用of()方法:

... = LocalDateTime.of(year, month, day, hours, minutes, seconds);

首先,有一些參數以與類中相同的格式指定日期LocalDate。然後有一些參數以與類中相同的格式指定時間LocalTime。下面列出了該方法的所有變體of()

方法
of (int year, int month, int day, int hour, int minute)
of (int year, int month, int day, int hour, int minute, int second)
of (int year, int month, int day, int hour, int minute, int second, int nano)
of (int year, Month month, int day, int hour, int minute)
of (int year, Month month, int day, int hour, int minute, int second)
of (int year, Month month, int day, int hour, int minute, int second, int nano)
of (LocalDate date, LocalTime time)

LocalDate可以直接設置日期,也可以通過andLocalTime對象間接設置:

代碼
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime current = LocalDateTime.of(date, time);
System.out.println("Now = " + current);

LocalDateTime date = LocalDateTime.of(2019, Month.MAY, 15, 12, 15, 00);
System.out.println("Now = " + date);
控制台輸出
Now = 2019-02-22T10:05:38.465675100
Now = 2019-05-15T12:15

該類LocalDateTime具有獲取日期和/或時間元素的方法。LocalDate它們完全反映了和類的方法LocalTime。我們不會在這裡重複它們。



2.Instant

Java 的創造者也沒有忘記老派的方式。

Date Time API 包括一個 Instant 類,用於處理計算機中發生的進程的時間。它處理的不是小時、分鐘和秒,而是秒、毫秒和納秒。

這個類有兩個字段代表:

  • 自 1970 年 1 月 1 日以來經過秒數
  • 納秒

該課程是為開發人員製作的嗎?是的。這就是為什麼它以 Unix 時間計算時間,從 1970 年初開始。

甚至可以說Instant類是類的簡化版Date,只保留程序員需要的東西。

您可以使用與獲取Instant對象完全相同的方式獲取LocalTime對象:

Instant timestamp = Instant.now();

其中timestamp是一個Instant變量,是對類的靜態方法的調用。Instant.now()now()Instant

例子:

代碼 控制台輸出
Instant timestamp = Instant.now();
System.out.println(timestamp);

2019-02-22T08:42:42.234945300Z

of()您還可以通過傳遞自 1970 年 1 月 1 日以來經過的時間,使用該方法的變體創建一個新對象:

ofEpochMilli(long milliseconds)
您需要傳遞的毫秒數
ofEpochSecond(long seconds)
你需要傳遞秒數
ofEpochSecond(long seconds, long nanos)
你需要傳遞秒和納秒

Instant對象可用的方法

Instant 類有兩個返回其字段值的方法:

long getEpochSecond()
自 1970 年 1 月 1 日以來經過的秒數
int getNano()
納秒。
long toEpochMilli()
自 1970 年 1 月 1 日以來經過的毫秒數

還有一些方法可以Instant根據現有對象創建新對象:

Instant plusSeconds(long)
將秒數添加到當前時間
Instant plusMillis(long)
添加毫秒
Instant plusNanos(long)
添加納秒
Instant minusSeconds(long)
減秒
Instant minusMillis(long)
減去毫秒
Instant minusNanos(long)
減去納秒

例子:

代碼 控制台輸出
Instant timestamp = Instant.now();
System.out.println(timestamp);

long n = timestamp.toEpochMilli();
Instant time = Instant.ofEpochMilli(n);
System.out.println(time);

2019-02-22T09:01:20.535344Z



2019-02-22T09:01:20.535Z