JDK8时间API

参考网址:https://blog.csdn.net/forwujinwei/article/details/78060618

新的时间日期API位于Java.time包,操作时间很方便,最主要是线程安全!

关键类如下

    ●Instant-时间戳

    ●LocalDate——不包含具体时间的日期

    ●LocalTime——不含日期的时间

    ●LocalDateTime——日期及时间

    ●ZonedDateTime——这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的。 
  • 获取当天的日期

      LocalDate.now()
    
  • 获取当前的年月日

      使用get即可:eg:int year=LocalDate.now().getYear()
    
  • 创建某个特定的日期

      LocalDate birthDay=LocalDate.of(2012, 03, 03)(ps:还可以利用from,需要的自行研究)
    
  • 检查两个日期是否相等

      利用equals(),新的日期API重写了equals。
    
  • 如何增加两天

      利用plusDays(2)或者plus(2, ChronoUnit.DAYS),它返回的是增加两天之后的一个新的实例,因为LocalTime是不可变类。
    
  • 如何减小两小时

      对应minus()方法
    
  • 获取时钟

      Clock.systemDefaultZone()//SystemClock[Asia/Shanghai]
    
  • 如何在时区之间转换时间

      LocalDateTime localDateTime=LocalDateTime.now();
    
      ZoneId eur=ZoneId.of(ZoneId.SHORT_IDS.get("AGT"));//Buenos_Aires
    
      ZonedDateTime zoneDateTime=ZonedDateTime.of(localDateTime, eur);
    
      //2018-07-02T15:43:42.852-03:00[America/Argentina/Buenos_Aires],-03:00表示Buenos_Aires时间
    
  • 检查闰年

      isLeapYear()
    
  • 获取当前时间戳

      Instant instant=Instant.now();//
    
      instant.toEpochMilli()//转换成毫秒值
    
  • Instant和Date,localDateTime的转换

      1、instant和date的转换
    
      Date date=Date.from(instant);
    
      Instant instant=date.toInstant()
    
      2、LocalDateTime转换为date
    
      LocalDateTime localDateTime = LocalDateTime.now().minusDays(7);
    
      ZoneId zone = ZoneId.systemDefault();
    
      Instant instant = localDateTime.atZone(zone).toInstant();
    
      java.util.Date date = Date.from(instant);
    
      3、date转化为LocalDate(利用LocalDateTime)
    
      java.util.Date date = new java.util.Date();
    
      Instant instant = date.toInstant();
    
      ZoneId zone = ZoneId.systemDefault();
    
      LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
    
      LocalDate localDate = localDateTime.toLocalDate();
    
  • 字符串解析为日期

使用自带的格式:

LocalDateTime format=LocalDateTime.parse("2011-12-03T10:15:30+01:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);

使用自定义格式:

DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

LocalDateTime loc=LocalDateTime.parse("2012-12-12 15:23:23",dateTimeFormatter);
  • 日期转化为字符串

      LocalDateTime ldt=LocalDateTime.now();
    
      DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
      String date=ldt.format(dateTimeFormatter);
    
  • 获取两个日期之间相差天数

      LocalDate now=LocalDate.now();
    
      LocalDate old=LocalDate.now();
    
      long days=now.toEpochDay()-old.toEpochDay();

你可能感兴趣的:(JDK8时间API)