java8学习笔记5_新日期API

1. 关于日期与时间

几个时间概念:

  • 格林威治标准时间(GMT): 正午时间是太阳穿越本初子午线的时间,该时间由于地球自转影响,时间会有误差,它被更精确的UTC时间取代, 但可以理解GMT时间和UTC时间是等价的。

  • UTC时间(Coordinated Universal Time):协调世界时。格式:2018-06-03T11:22:33.567z。

  • IOS8601

Java8之前的版本,可以使用JodaTime第三方库来简化时间与日期的运算。到了JDK8版本,建议使用JDK本身的新的时间日期API。

2. Joda Time

Joda Time(http://www.joda.org)是一个开源的第三方库,在Java8之前可以说是一个标准。

示例:

        DateTime today = new DateTime();
        DateTime tomorrow = today.plusDays(1);
        System.out.println(today.toString("yyyy-MM-dd HH:mm:ss"));
        System.out.println(tomorrow);

        System.out.println("======================");
        //计算当前时间3个月之后的最后一天
        LocalDate localDate = new LocalDate();
        System.out.println(localDate);
        LocalDate newLocalDate = localDate.plusMonths(3).dayOfMonth().withMaximumValue();
        System.out.println(newLocalDate.toDate());

        System.out.println("======================");
        //两年前的第3个月的最后一天
        DateTime dateTime2 = new DateTime();
        DateTime dateTime3 = dateTime2.minusYears(2).monthOfYear().setCopy(3).dayOfMonth().withMaximumValue();
        System.out.println(dateTime3.toString("yyyy-MM-dd HH:mm:ss"));

3. Java8 新API

这些类位于java.time包下,在使用上和Joda Time非常类似。

示例:

        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);

        int res = localDate.getDayOfWeek().getValue();
        System.out.println(res);

        System.out.println(localDate.getDayOfMonth());

        System.out.println("-----------------------");

        Clock clock= Clock.systemUTC();
        System.out.println(clock.getZone());
        System.out.println(clock.millis());

新的API目的是为了取代之前的Calenday类是Date类,使得在计算时间日期时代码的可读性更好,编码方式更简单。

类和方法远不止这些,在使用时去查阅就可以了。

你可能感兴趣的:(java8)