java8新特性-日期时间api

简介:旧的java版本中,我们经常使用java.util.Date包来处理日期,使用起来繁琐,功能也不是非常的强大,线程不安全。随着Java 8的发布,新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理,弥补了之前版本的弊端。很多新的 API类放在了java.time 包下,重要的api有:
LocalDate ,LocalDateTime,LocalTime,ZonedDateTime,ZoneId,ZoneOffset等

优点

  1. 类是不可变的
  2. 线程安全的
  3. 处理跨时区方便

示例代码

public class DateTimeTest {
	public static void main(String[] args) {
		DateTimeTest.testLocalDateTime();
		DateTimeTest.testZonedDateTime();
	}
	//本地化日期时间
	public static void testLocalDateTime(){
		//获取当前日期的时间
		LocalDateTime now = LocalDateTime.now();
		System.out.println("当前时间:"+now);
		LocalDate localDate = now.toLocalDate();
		System.out.println("日期:"+localDate);
		LocalTime localTime = now.toLocalTime();
		System.out.println("时分秒毫秒:"+localTime);
		int year = now.getYear();
		int month = now.getMonth().getValue();
		int day = now.getDayOfMonth();
		int hour = now.getHour();
		int minute = now.getMinute();
		int second = now.getSecond();
		System.out.println("年:"+year+",月:"+month+",日:"+day+",时:"+hour+",分:"+minute+",秒:"+second);
		LocalDateTime withYear = now.withDayOfMonth(10).withYear(2020);
		System.out.println("修改年,日期: " + withYear);
		LocalDate localDate2 = LocalDate.of(2020, Month.DECEMBER, 12);
		System.out.println("设置年月日:"+localDate2);
		LocalDate parse = LocalDate.parse("2020-01-06");
		System.out.println("解析年月日:"+parse);
		LocalTime of = LocalTime.of(20,5, 30);
		System.out.println("设置时分秒:"+of);
		LocalTime parse2 = LocalTime.parse("20:15:30");
		System.out.println("解析时分秒:"+parse2);
	}
	//使用时区的日期时间API
	public static void testZonedDateTime(){
		ZonedDateTime parse = ZonedDateTime.parse("2019-12-03T10:15:30+05:00[Asia/Shanghai]");
		System.out.println("时间:"+parse);
		ZoneId of = ZoneId.of("Z");
		System.out.println("ZoneId:"+of);
		ZoneId systemDefault = ZoneId.systemDefault();
		System.out.println("当期时区: " + systemDefault);
		LocalDateTime ldt1 = LocalDateTime.now(systemDefault);
	    System.out.println("本地化日期时间: " + ldt1);
        ZonedDateTime atZone = ldt1.atZone(systemDefault);
        System.out.println("时区格式显示时间:"+atZone);
        System.out.println("格林威治时间:"+LocalDateTime.now(of));
		//可以获取所有时区时区信息
		Set<String> availableZoneIds = ZoneId.getAvailableZoneIds();
		availableZoneIds.stream().forEach( s ->System.err.println(s));
	}
}

结果
java8新特性-日期时间api_第1张图片

你可能感兴趣的:(java8特性)