Java日期时间方法
在Java Date-Time API中的方法名称尽可能在类之间保持一致。
例如, now
方法返回当前时刻的日期或时间值。from
方法允许从一个类转换到另一个类。
下表列出了常用的前缀:
of
静态工厂方法 工厂方法创建一个实例并验证输入参数from
静态工厂方法将输入参数转换为目标类的实例。parse
静态工厂方法 解析输入字符串以创建目标类的实例。format
实例方法 格式化临时对象以产生字符串。get
实例方法 返回目标对象的一部分。is
实例方法 查询目标对象。with
实例方法 返回一个元素已更改的目标对象的副本。plus
实例方法 返回具有添加的时间量的对象的副本。minus
实例方法 返回具有减去时间量的对象的副本。to
实例方法 将此对象转换为另一种类型。at
实例方法 将此对象与另一个对象组合。
of()方法
Java日期时间API的XXX()方法用于创建对象。
以下代码显示了如何创建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); } }
上面的代码生成以下结果。
from()方法
from()
是一个静态工厂方法,用于从指定的参数派生datetime对象。
与 of()
不同, from()
需要对指定参数进行数据转换。
以下代码显示如何从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); } }
上面的代码生成以下结果。
with()方法
要更改datetime对象中的字段,我们可以使用带有前缀的方法。
withXXX()方法返回一个对象的副本,指定的字段已更改,因为Date Time API中的大多数对象都是不可变的。
以下代码显示如何从另一个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); } }
上面的代码生成以下结果。
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); } }
上面的代码生成以下结果。
toXXX()方法
toXXX()
将对象转换为相关类型。
以下代码显示了使用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); } }
上面的代码生成以下结果。
atXXX()方法
atXXX()
从带有附加信息的现有datetime对象创建一个新的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); } }
上面的代码生成以下结果。
以下代码显示了如何使用支持构建器模式来构建本地日期的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); } }
上面的代码生成以下结果。
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); } }
上面的代码生成以下结果。
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); } }
上面的代码生成以下结果。
now()方法
now()方法返回各种类的当前时间,例如LocalDate,LocalTime,LocalDateTime,ZonedDateTime。
以下代码显示如何使用now()方法返回当前日期和时间。
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); } }
上面的代码生成以下结果。