Java 日期時間方法

2021-02-24 15:42 更新

Java日期時間方法


在 Java Date-Time API 中的方法名稱盡可能在類之間保持一致。

例如, now 方法返回當(dāng)前時刻的日期或時間值。from方法允許從一個類轉(zhuǎn)換到另一個類。

下表列出了常用的前綴:

  • of
    靜態(tài)工廠方法
    工廠方法創(chuàng)建一個實例并驗證輸入?yún)?shù)
  • from
    靜態(tài)工廠方法將輸入?yún)?shù)轉(zhuǎn)換為目標(biāo)類的實例。
  • parse
    靜態(tài)工廠方法
    解析輸入字符串以創(chuàng)建目標(biāo)類的實例。
  • format
    實例方法
    格式化臨時對象以產(chǎn)生字符串。
  • get
    實例方法
    返回目標(biāo)對象的一部分。
  • is
    實例方法
    查詢目標(biāo)對象。
  • with
    實例方法
    返回一個元素已更改的目標(biāo)對象的副本。
  • plus
    實例方法
    返回具有添加的時間量的對象的副本。
  • minus
    實例方法
    返回具有減去時間量的對象的副本。
  • to
    實例方法
    將此對象轉(zhuǎn)換為另一種類型。
  • at
    實例方法
    將此對象與另一個對象組合。

of()方法

Java 日期時間 API 的 XXX()方法用于創(chuàng)建對象。

以下代碼顯示了如何創(chuàng)建 LocalDate 類的對象:

import java.time.LocalDate;
import java.time.Month;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate1  = LocalDate.of(2014, 5, 21); 
    System.out.println(localDate1);
    
    LocalDate localDate2  = LocalDate.of(2014, Month.MARCH, 4);
    System.out.println(localDate2);
    
    LocalDate localDate3  = LocalDate.ofEpochDay(2014);
    System.out.println(localDate3);
    
    LocalDate localDate4  = LocalDate.ofYearDay(2014, 39);
    System.out.println(localDate4);
  }
}

上面的代碼生成以下結(jié)果。

from()方法

from()是一個靜態(tài)工廠方法,用于從指定的參數(shù)派生 datetime 對象。

of()不同, from()需要對指定參數(shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換。

以下代碼顯示如何從 LocalDateTime 派生 LocalDate:

import java.time.LocalDate;
import java.time.LocalDateTime;

public class Main {
  public static void main(String[] args) {
    LocalDateTime  localDateTime = LocalDateTime.of(2015, 6,  21,  13, 40);
    System.out.println(localDateTime);
    
    LocalDate localDate  = LocalDate.from(localDateTime);
    System.out.println(localDate);
  }
}

上面的代碼生成以下結(jié)果。

with()方法

要更改 datetime 對象中的字段,我們可以使用帶有前綴的方法。

withXXX()方法返回一個對象的副本,指定的字段已更改,因為 Date Time API 中的大多數(shù)對象都是不可變的。

以下代碼顯示如何從另一個 LocalDate 獲取 LocalDate,并更改年份:

import java.time.LocalDate;
import java.time.Month;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate1  = LocalDate.of(2014, Month.MAY,  2);
    System.out.println(localDate1);
    
    LocalDate localDate2  = localDate1.withYear(2015);
    System.out.println(localDate2);
    
    LocalDate localDate3  = localDate1.withYear(2014).withMonth(7);
    System.out.println(localDate3);
    
  }
}

上面的代碼生成以下結(jié)果。

getXXX()方法

getXXX()返回對象的指定元素。

以下代碼顯示如何從 LocalDate 對象獲取年,月和日:

import java.time.LocalDate;
import java.time.Month;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate = LocalDate.of(2014, 6, 21);
    int year = localDate.getYear();
    System.out.println(year);
    Month month = localDate.getMonth();
    System.out.println(month);

    int day = localDate.getDayOfMonth();
    System.out.println(day);

  }
}

上面的代碼生成以下結(jié)果。

toXXX()方法

toXXX()將對象轉(zhuǎn)換為相關(guān)類型。

以下代碼顯示了使用 toXXX() 方法的一些示例。

import java.time.LocalDate;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate = LocalDate.of(2014, 6, 21); 
    long days = localDate.toEpochDay(); 
    System.out.println(days);

  }
}

上面的代碼生成以下結(jié)果。

atXXX()方法

atXXX()從帶有附加信息的現(xiàn)有 datetime 對象創(chuàng)建一個新的 datetime 對象。

以下代碼在方法中使用以向日期對象添加附加信息。

import java.time.LocalDate;
import java.time.LocalDateTime;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate  = LocalDate.of(2014, 6, 21);
    System.out.println(localDate);

    LocalDateTime  localTime1 = localDate.atStartOfDay();
    System.out.println(localTime1);

    LocalDateTime  localTime2 = localDate.atTime(16, 21);
    System.out.println(localTime2);
  }
}

上面的代碼生成以下結(jié)果。

以下代碼顯示了如何使用支持構(gòu)建器模式來構(gòu)建本地日期的atXXX()方法:

import java.time.LocalDate;
import java.time.Year;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate  = Year.of(2014).atMonth(6).atDay(21);
    System.out.println(localDate);

  }
}

上面的代碼生成以下結(jié)果。

plusXXX()方法

plusXXX()通過添加指定的值來返回對象的副本。

以下代碼顯示如何使用plus方法向本地添加更多時間日期對象。

import java.time.LocalDate;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate  = LocalDate.of(2014, 6, 21); 
    LocalDate localDate1  = localDate.plusDays(5);   
    System.out.println(localDate1);
    LocalDate localDate2  = localDate.plusMonths(3);
    System.out.println(localDate2);
    LocalDate localDate3  = localDate.plusWeeks(3);        
    System.out.println(localDate3);
  }
}

上面的代碼生成以下結(jié)果。

minusXXX()方法

minusXXX()通過減去指定的值來返回對象的副本。

以下代碼顯示如何從本地日期對象中減去時間。

import java.time.LocalDate;

public class Main {
  public static void main(String[] args) {
    LocalDate localDate  = LocalDate.of(2014, 6, 21); 
    LocalDate localDate1  = localDate.minusMonths(5);   
    System.out.println(localDate1);
    LocalDate localDate2  = localDate.minusWeeks(3);
    System.out.println(localDate2);
  }
}

上面的代碼生成以下結(jié)果。

now()方法

now() 方法返回各種類的當(dāng)前時間,例如 LocalDate,LocalTime,LocalDateTime,ZonedDateTime。

以下代碼顯示如何使用 now()方法返回當(dāng)前日期和時間。

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

public class Main {
  public static void main(String[] args) {
    LocalDate localDate = LocalDate.now(); 
    System.out.println(localDate);
    
    LocalTime  localTime  = LocalTime.now();
    System.out.println(localTime);
    
    LocalDateTime  dateTime  = LocalDateTime.now();
    System.out.println(dateTime);
    
    ZonedDateTime dateTimeWithZone  = ZonedDateTime.now();
    System.out.println(dateTimeWithZone);
  }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號