Java8日期时间用法

java.util.Date和java.util.Calendar易用性差,不支持时区,不是线程安全的。Java8增加了新的日期和时间类:LocalDate、LocalTime、Instant、Duration 以及 Period,这些类都包含在 java.time包中。新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。

Java8提供的日期时间类

  • LocalDate 日期,格式为:yyyy-MM-dd
  • LocalTime 时间,格式为:HH:mm:ss SSS
  • LocalDateTime 日期时间,格式为:yyyy-MM-ddTHH:mm:ss SSS ,是前2者的结合
  • Instant   时间戳
  • Duration  持续时间,时间差
  • Period    时间段
  • ZoneOffset    时区偏移量,比如:+8:00
  • ZonedDateTime    带时区的时间
  • Clock    时钟,比如获取目前美国纽约的时间
  • java.time.format.DateTimeFormatter    时间格式化

参考示例


public static void test1(){

	//日期

	LocalDate localDate = LocalDate.now(); 

	System.out.println(localDate);

	System.out.println(localDate.plusDays(1)); //+1天

	System.out.println(localDate.minusDays(1)); //-1天

	String currDate=DateTimeFormatter.ofPattern(yyyy-MM-dd).format(localDate);

	System.out.println(currDate);

	

	//时间

	LocalTime localTime = LocalTime.now(); //当前 日期时间

	System.out.println(localTime.getHour()); //当前 小时

	System.out.println(localTime.plusHours(1)); //+1小时

	

	//日期+时间

	LocalDateTime localDateTime = LocalDateTime.now();

	System.out.println(localDateTime);

	

	//自定义日期

	LocalDate date = LocalDate.of(2018,2,6);

	System.out.println(自定义日期:+date);

	

	//判断日期是否相等

	LocalDate date1 = LocalDate.now();

	LocalDate date2 = LocalDate.of(2018,2,5);

	if(date1.equals(date2)){

		System.out.println(时间相等);

	}else{

		System.out.println(时间不等);

	}

	

	//计算一周后日期

	LocalDate today = LocalDate.now();

	System.out.println(今天的日期为:+today);

	LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);

	System.out.println(一周后的日期为:+nextWeek);

	

	//判断日期范围

	LocalDate tomorrow = LocalDate.of(2018,2,6);

	if(tomorrow.isAfter(today)){

		System.out.println(之后的日期:+tomorrow);

	}

	LocalDate yesterday = today.minus(1, ChronoUnit.DAYS);

	if(yesterday.isBefore(today)){

		System.out.println(之前的日期:+yesterday);

	}

	

	//日期格式化

	String dayAfterTommorrow = 20180205;

	LocalDate formatted = LocalDate.parse(dayAfterTommorrow,DateTimeFormatter.BASIC_ISO_DATE);

	System.out.println(dayAfterTommorrow+  格式化后的日期为:  +formatted);



	//字符串、日期 互转

	LocalDateTime dateTime1 = LocalDateTime.now();

	DateTimeFormatter format1 = DateTimeFormatter.ofPattern(yyyy/MM/dd HH:mm:ss);

	//日期转字符串

	String str = dateTime1.format(format1);

	System.out.println(日期转换为字符串:+str);



	DateTimeFormatter format2 = DateTimeFormatter.ofPattern(yyyy/MM/dd HH:mm:ss);

	//字符串转日期

	LocalDate dateTime2 = LocalDate.parse(str,format2);

	System.out.println(日期类型:+dateTime2);

	

}

 

 

关系数据库——MySQL索引及优化 微服务——分布式事务
微信公众号