📅  最后修改于: 2023-12-03 14:42:53.590000             🧑  作者: Mango
在Java 8中,ZonedDateTime是一个有时区信息的日期和时间类。它可以使用时区信息将日期和时间转换为特定的时区,并支持在不同的时区之间进行转换。
ZonedDateTime类提供了许多方法来获取日期和时间的各个部分,其中包括getLong()方法。该方法可以用于获取指定日期时间字段的长整型值,如年、月、日、时、分、秒等。
下面是使用getLong()方法的示例代码:
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// 创建ZonedDateTime实例
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.of("America/New_York"));
// 获取年份
long year = zdt.getLong(java.time.temporal.ChronoField.YEAR);
System.out.println("Year : " + year);
// 获取月份
long month = zdt.getLong(java.time.temporal.ChronoField.MONTH_OF_YEAR);
System.out.println("Month : " + month);
// 获取日
long day = zdt.getLong(java.time.temporal.ChronoField.DAY_OF_MONTH);
System.out.println("Day : " + day);
// 获取小时
long hour = zdt.getLong(java.time.temporal.ChronoField.HOUR_OF_DAY);
System.out.println("Hour : " + hour);
// 获取分钟
long minute = zdt.getLong(java.time.temporal.ChronoField.MINUTE_OF_HOUR);
System.out.println("Minute : " + minute);
// 获取秒
long second = zdt.getLong(java.time.temporal.ChronoField.SECOND_OF_MINUTE);
System.out.println("Second : " + second);
}
}
输出结果为:
Year : 2022
Month : 9
Day : 26
Hour : 2
Minute : 2
Second : 47
在上面的示例中,我们创建了一个ZonedDateTime对象,并使用时区ID“America/New_York”将其设置为当前时间。然后,我们使用getLong()方法获取了年、月、日、小时、分钟和秒的值,将其输出到控制台。
需要注意的是,getLong()方法需要传递一个TemporalField对象,该对象表示要获取的日期时间字段。在上面的示例中,我们使用的是java.time.temporal.ChronoField枚举中定义的字段,它定义了一些标准的日期时间字段,如YEAR、MONTH_OF_YEAR、DAY_OF_MONTH、HOUR_OF_DAY、MINUTE_OF_HOUR和SECOND_OF_MINUTE等。
此外,ZonedDateTime类还提供了其他许多有用的方法,如withZoneSameInstant()、withZoneSameLocal()、plus()和minus()等,以帮助我们在不同时区之间进行转换、加减日期时间等操作。