在 Java Date-Time API 中的方法名稱盡可能在類之間保持一致。
例如, now
方法返回當(dāng)前時(shí)刻的日期或時(shí)間值。from
方法允許從一個(gè)類轉(zhuǎn)換到另一個(gè)類。
下表列出了常用的前綴:
of
from
parse
format
get
is
with
plus
minus
to
at
Java 日期時(shí)間 API 的 XXX()方法用于創(chuàng)建對(duì)象。
以下代碼顯示了如何創(chuàng)建 LocalDate 類的對(duì)象:
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()
是一個(gè)靜態(tài)工廠方法,用于從指定的參數(shù)派生 datetime 對(duì)象。
與 of()
不同, from()
需要對(duì)指定參數(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é)果。
要更改 datetime 對(duì)象中的字段,我們可以使用帶有前綴的方法。
withXXX()方法返回一個(gè)對(duì)象的副本,指定的字段已更改,因?yàn)?Date Time API 中的大多數(shù)對(duì)象都是不可變的。
以下代碼顯示如何從另一個(gè) 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()
返回對(duì)象的指定元素。
以下代碼顯示如何從 LocalDate
對(duì)象獲取年,月和日:
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()
將對(duì)象轉(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()
從帶有附加信息的現(xiàn)有 datetime 對(duì)象創(chuàng)建一個(gè)新的 datetime 對(duì)象。
以下代碼在方法中使用以向日期對(duì)象添加附加信息。
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()
通過添加指定的值來返回對(duì)象的副本。
以下代碼顯示如何使用plus方法向本地添加更多時(shí)間日期對(duì)象。
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()
通過減去指定的值來返回對(duì)象的副本。
以下代碼顯示如何從本地日期對(duì)象中減去時(shí)間。
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() 方法返回各種類的當(dāng)前時(shí)間,例如 LocalDate,LocalTime,LocalDateTime,ZonedDateTime。
以下代碼顯示如何使用 now()方法返回當(dāng)前日期和時(shí)間。
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é)果。
更多建議: