Java 8新增的 java.time 包常用类用法

Java sxdgy 428℃

Java8专门新增了一个java.time包,该包下包含了如下常用的类:

  • Clock:该类用于获取指定时区的当前日期、时间。该类可取代System类的currentTimeMillis()方法,而且提供了更多方法来获取当前日期、时间。该类提供了大量静态方法来获取Clock对象。
  • Duration:该类代表持续时间。该类可以非常方便地获取一段时间。
  • Instant:代表一个具体的时刻,可以精确到纳秒。该类提供了静态的now()方法来获取当前时刻,也提供了静态的now(Clockclock)方法来获取clock对应的时刻。除此之外,它还提供了一系列minusXxx()方法在当前时刻基础上减去一段时间,也提供了plusXxx()方法在当前时刻基础上加上一段时间。
  • LocalDate:该类代表不带时区的日期,例如2007-12-03。该类提供了静态的now()方法来获取当前日期,也提供了静态的now(Clockclock)方法来获取clock对应的日期。除此之外,它还提供了minusXxx()方法在当前年份基础上减去几年、几月、几周或几日等,也提供了plusXxx()方法在当前年份基础上加上几年、几月、几周或几日等。
  • LocalTime:该类代表不带时区的时间,例如10:15:30。该类提供了静态的now()方法来获取当前时间,也提供了静态的now(Clockclock)方法来获取clock对应的时间。除此之外,它还提供了minusXxx()方法在当前年份基础上减去几小时、几分、几秒等,也提供了plusXxx()方法在当前年份基础上加上几小时、几分、几秒等。
  • LocalDateTime:该类代表不带时区的日期、时间,例如2007-12-03T10:15:30。该类提供了静态的now()方法来获取当前日期、时间,也提供了静态的now(Clockclock)方法来获取clock对应的日期、时间。除此之外,它还提供了minusXxx()方法在当前年份基础上减去几年、几月、几日、几小时、几分、几秒等,也提供了plusXxx()方法在当前年份基础上加上几年、几月、几日、几小时、几分、几秒等。
  • MonthDay:该类仅代表月日,例如–04-12。该类提供了静态的now()方法来获取当前月日,也提供了静态的now(Clockclock)方法来获取clock对应的月日。
  • Year:该类仅代表年,例如2014。该类提供了静态的now()方法来获取当前年份,也提供了静态的now(Clockclock)方法来获取clock对应的年份。除此之外,它还提供了minusYears()方法在当前年份基础上减去几年,也提供了plusYears()方法在当前年份基础上加上几年。
  • YearMonth:该类仅代表年月,例如2014-04。该类提供了静态的now()方法来获取当前年月,也提供了静态的now(Clockclock)方法来获取clock对应的年月。除此之外,它还提供了minusXxx()方法在当前年月基础上减去几年、几月,也提供了plusXxx()方法在当前年月基础上加上几年、几月。
  • ZonedDateTime:该类代表一个时区化的日期、时间。
  • ZoneId:该类代表一个时区。
  • DayOfWeek:这是一个枚举类,定义了周日到周六的枚举值。
  • Month:这也是一个枚举类,定义了一月到十二月的枚举值。
import java.time.*;

public class NewDatePackageTest 
{ 
    public static void main(String[] args) 
    { 
        // -----下面是关于Clock的用法----- 
        // 获取当前Clock 
        Clock clock = Clock.systemUTC(); 
        // 通过 Clock获取当前时刻 
        System.out.println("当前时刻为:" + clock.instant()); 
        // 获取 clock 对应的毫秒数,与 System.currentTimeMillis()输出相同 
        System.out.println(clock.millis()); 
        System.out.println(System.currentTimeMillis()); 
        // -----下面是关于Duration的用法----- 
        Duration d = Duration.ofSeconds(6000); 
        System.out.println("6000 秒相当于" + d.toMinutes() + "分"); 
        System.out.println("6000 秒相当于" + d.toHours() + "小时"); 
        System.out.println("6000 秒相当于" + d.toDays() + "天"); 
        // 在 clock基础上增加6000 秒,返回新的 Clock 
        Clock clock2 = Clock.offset(clock, d); 
        // 可以看到 clock2 与 clock1 相差1小时40分 
        System.out.println("当前时刻加 6000 秒为:" +clock2.instant()); 
        // -----下面是关于Instant的用法----- 
        // 获取当前时间 
        Instant instant = Instant.now(); 
        System.out.println(instant); 
        // instant 添加 6000 秒(即 100 分钟),返回新的 Instant 
        Instant instant2 = instant.plusSeconds(6000); 
        System.out.println(instant2); 
        // 根据字符串解析 Instant 对象 
        Instant instant3 = Instant.parse("2014-02-23T10:12:35.342Z"); 
        System.out.println(instant3); 
        // 在 instant3 的基础上添加5小时4分钟 
        Instant instant4 = instant3.plus(Duration.ofHours(5).plusMinutes(4)); 
        System.out.println(instant4); 
        // 获取 instant4 的5天以前的时刻 
        Instant instant5 = instant4.minus(Duration.ofDays(5)); 
        System.out.println(instant5); 
        // -----下面是关于LocalDate 的用法----- 
        LocalDate localDate = LocalDate.now(); 
        System.out.println(localDate); 
        // 获得2014 年的第146 天 
        localDate = LocalDate.ofYearDay(2014, 146); 
        System.out.println(localDate); // 2014-05-26 
        // 设置为 2014 年5月21日 
        localDate = LocalDate.of(2014, Month.MAY, 21); 
        System.out.println(localDate); // 2014-05-21 
        // -----下面是关于LocalTime 的用法----- 
        // 获取当前时间 
        LocalTime localTime = LocalTime.now(); 
        // 设置为22点33分 
        localTime = LocalTime.of(22, 33); 
        System.out.println(localTime); // 22:33 
        // 返回一天中的第5503 秒 
		localTime = LocalTime.ofSecondOfDay(5503); 
        System.out.println(localTime); // 01:31:43 
        // -----下面是关于 localDateTime 的用法----- 
        // 获取当前日期、时间 
        LocalDateTime localDateTime = LocalDateTime.now(); 
        // 当前日期、时间加上25小时3分钟 
        LocalDateTime future = localDateTime.plusHours(25).plusMinutes(3); 
        System.out.println("当前日期、时间的25小时3分之后:" + future); 
        // -----下面是关于Year、YearMonth、MonthDay的用法示例----- 
        Year year = Year.now(); // 获取当前的年份 
        System.out.println("当前年份:" + year); // 输出当前年份 
        year = year.plusYears(5); // 当前年份再加5年 
        System.out.println("当前年份再过5年:" + year); 
        // 根据指定月份获取 YearMonth 
        YearMonth ym = year.atMonth(10); 
        System.out.println("year 年10月:" + ym); // 输出 XXXX-10,XXXX代表当前年份 
        // 当前年月再加5年、减3个月 
        ym = ym.plusYears(5).minusMonths(3); 
        System.out.println("year 年10月再加5年、减3个月:" + ym); 
        MonthDay md = MonthDay.now(); 
        System.out.println("当前月日:" + md); // 输出--XX-XX,代表几月几日 
        // 设置为5月23日 
        MonthDay md2 = md.with(Month.MAY).withDayOfMonth(23); 
        System.out.println("5 月23日为:" + md2); // 输出--05-23 
    } 
}

转载请注明:零五博客 » Java 8新增的 java.time 包常用类用法

喜欢 (0)or分享 (0)