admin管理员组

文章数量:1595877

Java 8 时间接口示例:Period、Year、YearMonth 和 ZonedDateTime

  • java.time.Period
  • java.time.Year
  • java.time.YearMonth
  • java.time.ZonedDateTime
  • 参考文献

此页面提供了 Java 8 API 的示例,如 PeriodYearYearMonthZonedDateTime

这些是 java 8 中引入的新类。

Period 表示一个时间段。

Year 类代表年份,而 YearMonth 代表年份和月份。

ZonedDateTime 表示带区域的日期和时间。

java.time.Period

Period是指不同单位的时间量,如年、月或日。

例如:1年5个月10天。

PeriodDemo.java

import java.time.LocalDate;
import java.time.Period;
public class PeriodDemo {
	public static void main(String[] args) {
		LocalDate start = LocalDate.now();
		System.out.println("Period.between:"+Period.between(start, LocalDate.MAX).getDays());
		System.out.println("Period.ofDays:"+Period.ofDays(5).getDays());
	}
} 

输出

Period.between:19
Period.ofDays:5 

java.time.Year

Year类代表年份,如2014

这个类只与年份有关。

我们可以用它来判断闰年(leap year)或获取当前年份。

YearDemo.java

import java.time.Year;
public class YearDemo {
	public static void main(String[] args) {
		System.out.println("Year.now():"+Year.now());		
		System.out.println("Year.MAX_VALUE:"+Year.MAX_VALUE);
		System.out.println("Year.isLeap(2014):"+Year.isLeap(2014));
		System.out.println("Year.isLeap(2016):"+Year.isLeap(2016));
	}
} 

输出

Year.now():2014
Year.MAX_VALUE:999999999
Year.isLeap(2014):false
Year.isLeap(2016):true 

java.time.YearMonth

YearMonth 是代表年份和月份组合的类,如 2014-09

此类提供了获取给定日期字符串的年和月的方法。

YearMonthDemo.java

import java.time.YearMonth;
public class YearMonthDemo {
	public static void main(String[] args) {
		System.out.println("YearMonth.now():"+YearMonth.now());
		System.out.println("getMonthValue():"+YearMonth.parse("2014-09").getMonthValue());		
		System.out.println("getYear():"+YearMonth.parse("2014-09").getYear());
		System.out.println("isLeapYear():"+YearMonth.parse("2014-09").isLeapYear());		
	}
} 

输出

YearMonth.now():2014-09
getMonthValue():9
getYear():2014
isLeapYear():false 

java.time.ZonedDateTime

ZonedDateTime 类表示带区域的日期和时间。;例如:2014-09-12T18:32:29.636+05:30[Asia/Calcutta]

该类提供了获取年、月、日、时、分、秒和区域偏移量的方法。

ZonedDateTimeDemo.java

import java.time.ZonedDateTime;
public class ZonedDateTimeDemo {
	public static void main(String[] args) {
		System.out.println(ZonedDateTime.now());
		ZonedDateTime zdt = ZonedDateTime.parse("2014-09-12T10:15:30+01:00[Europe/Paris]");
		System.out.println("getDayOfYear:"+zdt.getDayOfYear());
		System.out.println("zdt.getYear():"+zdt.getYear());
	}
} 

输出

2014-09-12T18:32:29.636+05:30[Asia/Calcutta]
getDayOfYear:255
zdt.getYear():2014 

参考文献

【1】Java 8 Time API Example: Period, Year, YearMonth and ZonedDateTime

本文标签: 示例新特性接口时间Java