java.time.ZonedDateTime

1 java.time.ZonedDateTime介绍

Java ZonedDateTime类是带有时区的日期时间的不可变表示形式。它继承了Object类并实现了ChronoZonedDateTime接口。

ZonedDateTime类用于存储所有日期和时间字段(精度为纳秒),以及时区,其时区偏移量用于处理模棱两可的本地日期时间。

2 java.time.ZonedDateTime声明

我们来看一下java.time.ZonedDateTime类的声明。

public final class ZonedDateTime extends Object implements Temporal, ChronoZonedDateTime<LocalDate>, Serializable  

3 java.time.ZonedDateTime方法

方法 描述
boolean equals(Object obj) 检查此日期时间是否等于另一个日期时间。
String format(DateTimeFormatter formatter) 使用指定的格式化程序格式化此日期时间。
static ZonedDateTime from(TemporalAccessor temporal) 从temporal对象获取ZonedDateTime的实例。
int get(TemporalField field) 从此日期时间获取指定字段的int值。
int getDayOfMonth() 获取日期字段。
DayOfWeek getDayOfWeek() 获取星期几字段,即枚举DayOfWeek。
int getDayOfYear() 获取日期字段。
int getHour() 获取小时字段。
long getLong(TemporalField field) 从此日期时间获取指定字段的long值。
Month getMinute() 获取分钟字段。
Month getMonth() 使用Month枚举获取月份字段。
int getMonthValue() 获取1到12之间的月份字段。
int getNano() 获取纳秒级字段。
ZoneOffset getOffset() 获取区域偏移量,例如:+01:00。
int getSecond() 获取秒钟字段。
int getYear() 获取年份字段。
ZoneId getZone() 获取时区,例如:"Europe/Paris"。
int hashCode() 此日期时间的哈希码。
boolean isSupported(TemporalField field) 检查是否支持指定的字段。
boolean isSupported(TemporalUnit unit) 检查指定的单元是否受支持。
ZonedDateTime minus(long amountToSubtract, TemporalUnit unit) 返回此日期时间的副本,并减去指定的数量。
ZonedDateTime minus(TemporalAmount amountToSubtract) 返回此ZonedDateTime的副本,并减去指定的天数。
ZonedDateTime minusDays(long daysToSubtract) 返回此ZonedDateTime的副本,并减去指定的天数。
ZonedDateTime minusHours(long hoursToSubtract) 返回此ZonedDateTime减去指定的小时数的副本。
ZonedDateTime minusMinutes(long minutesToSubtract) 返回此ZonedDateTime减去指定的分钟数的副本。
ZonedDateTime minusMonths(long monthsToSubtract) 返回此ZonedDateTime减去指定的月数的副本。
ZonedDateTime minusNanos(long nanos) 返回此ZonedDateTime减去指定的纳秒数的副本。
ZonedDateTime minusSeconds(long seconds) 返回此ZonedDateTime减去指定的秒数的副本。
ZonedDateTime minusWeeks(long weeksToSubtract) 返回此ZonedDateTime并减去指定的周数的副本。
ZonedDateTime minusYears(long yearsToSubtract) 返回此ZonedDateTime减去指定的年数的副本。
static ZonedDateTime now() 从默认时区中的系统时钟获取当前日期时间。
static ZonedDateTime now(Clock clock) 从指定的时钟获得当前日期时间。
static ZonedDateTime now(ZoneId zone) 从指定时区的系统时钟获取当前日期时间。
static ZonedDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond, ZoneId zone) 从年,月,日,小时,分钟,秒,纳秒和时区获得ZonedDateTime的实例。
static ZonedDateTime of(LocalDate date, LocalTime time, ZoneId zone) 从日期和时间获取ZonedDateTime的实例。
static ZonedDateTime of(LocalDateTime date, ZoneId zone) 从本地日期时间获取ZonedDateTime的实例。
static ZonedDateTime ofInstant(Instant instant, ZoneId zone) 从Instant和区域ID获取ZonedDateTime的实例。
static ZonedDateTime ofInstant(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone) 从通过组合本地日期时间和偏移量形成的瞬间获得ZonedDateTime的实例。
static ZonedDateTime ofLocal(LocalDateTime localDateTime, ZoneId zone, ZoneOffset preferredOffset) 如果可能,使用首选偏移量从本地日期时间获取ZonedDateTime的实例。
static ZonedDateTime ofStrict(LocalDateTime localDateTime, ZoneOffset offset, ZoneId zone) 获得ZonedDateTime的实例,严格验证本地日期时间,偏移量和区域ID的组合。
static ZonedDateTime parse(CharSequence text) 从文本字符串中获取ZonedDateTime的实例,例如2007-12-03T10:15:30+01:00[Europe/Paris]。
static ZonedDateTime parse(CharSequence text, DateTimeFormatter formatter) 使用特定格式器从文本字符串获取ZonedDateTime的实例。
ZonedDateTime plus(long amountToAdd, TemporalUnit unit) 返回此日期时间添加指定的数量的副本。
ZonedDateTime plus(TemporalAmount amountToAdd) 返回此日期时间添加指定的数量的副本。
ZonedDateTime plusDays(long daysToAdd) 返回此ZonedDateTime添加指定的天数的副本。
ZonedDateTime plusHours(long hoursToAdd) 返回此ZonedDateTime添加指定的小时数的副本。
ZonedDateTime plusMinutes(long minutesToAdd) 返回此ZonedDateTime添加指定的分钟数的副本。
ZonedDateTime plusMonths(long monthsToAdd) 返回此ZonedDateTime并添加指定的月数的副本。
ZonedDateTime plusNanos(long nanos) 返回此ZonedDateTime添加了指定的纳秒数的副本。
ZonedDateTime plusSeconds(long seconds) 返回此ZonedDateTime添加指定的秒数的副本。
ZonedDateTime plusWeeks(long weeksToAdd) 返回此ZonedDateTime添加指定的周数的副本。
ZonedDateTime plusYears(long yearsToAdd) 返回此ZonedDateTime添加指定的年数的副本。
<R> R query(TemporalQuery<R> query) 使用指定的查询查询此日期时间。
ValueRange range(TemporalField field) 获取指定字段的有效值范围。
LocalDate toLocalDate() 获取此日期时间的LocalDate部分。
LocalTime toLocalTime() 获取此日期时间的LocalTime部分。
OffsetDateTime toOffsetDateTime() 将此日期时间转换为OffsetDateTime。
String toString() 将此日期输出为String,例如:"2007-12-03T10:15:30+01:00[Europe/Paris]"
ZonedDateTime truncatedTo(TemporalUnit unit) 返回此ZonedDateTime截断时间的副本。
long until(Temporal endExclusive, TemporalUnit unit) 根据指定的单位计算到另一个日期时间的时间量。
ZonedDateTime with(TemporalAdjuster adjuster) 返回此日期时间的调整副本。
ZonedDateTime with(TemporalField field, long newValue) 返回此日期时间将指定字段设置为新值的副本。
ZonedDateTime withDayOfMonth(int dayOfMonth) 返回此ZonedDateTime更改日期的副本。
ZonedDateTime withDayOfYear(int dayOfYear) 返回此ZonedDateTime包含日期更改的副本。
ZonedDateTime withEarlierOffsetAtOverlap() 返回此日期时间将区域偏移更改为本地时间线重叠处的两个有效偏移中较早的一个的副本。
ZonedDateTime withFixedOffsetZone() 返回此日期时间将区域ID设置为偏移量的副本。
ZonedDateTime withHour(int hour) 返回此ZonedDateTime更改日期的副本。
ZonedDateTime withLaterOffsetAtOverlap() 返回此日期时间,将区域偏移更改为本地时间线重叠处的两个有效偏移中的较晚者的副本。
ZonedDateTime withMinute(int minute) 返回此ZonedDateTime更改了分钟的副本。
ZonedDateTime withMonth(int month) 返回此ZonedDateTime已更改年份的副本。
ZonedDateTime withNano(int nanoOfSecond) 返回此ZonedDateTime更改了纳秒的副本。
ZonedDateTime withSecond(int second) 返回此ZonedDateTime更改秒钟的副本。
ZonedDateTime withYear(int year) 返回此ZonedDateTime更改年份后的副本。
ZonedDateTime withZoneSameInstant(ZoneId zone) 使用不同的时区返回此日期时间保留该瞬间的副本。
ZonedDateTime withZoneSameLocal(ZoneId zone) 使用不同的时区返回此日期时间的副本,如果可能保留本地日期时间。

4 java.time.ZonedDateTime案例1

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
import java.time.ZonedDateTime;  
public class ZonedDateTimeExample1{  
  public static void main(String[] args) {  
    ZonedDateTime zone = ZonedDateTime.parse("2016-10-05T08:20:10+05:30[Asia/Kolkata]");  
    System.out.println(zone);  
  }  
}  

输出结果为:

2016-10-05T08:20:10+05:30[Asia/Kolkata]

5 java.time.ZonedDateTime案例2

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
import java.time.*;  
public class ZonedDateTimeExample2{  
  public static void main(String[] args) {  
    LocalDateTime  ldt = LocalDateTime.of(2017, Month.JANUARY,  19,   15,   26);  
    ZoneId  india = ZoneId.of("Asia/Kolkata");   
    ZonedDateTime zone1  = ZonedDateTime.of(ldt, india);   
    System.out.println("In India Central Time Zone: " + zone1);  
    ZoneId  tokyo = ZoneId.of("Asia/Tokyo");   
    ZonedDateTime zone2   = zone1.withZoneSameInstant(tokyo);   
    System.out.println("In Tokyo Central Time Zone:"  + zone2);  
  }  
}  

输出结果为:

In India Central Time Zone: 2017-01-19T15:26+05:30[Asia/Kolkata]
In Tokyo Central Time Zone:2017-01-19T18:56+09:00[Asia/Tokyo]

 

热门文章

优秀文章