日期 API 改进

原文:https://www.studytonight.com/java-9/date-api-improvement

Java 通过在 Java 9 版本的 LocalDate 类中添加一些新方法,改进了它的日期时间 API。其中一些是为了与 Java 流 API 连接而添加的。下面列出了这些方法。

  • public static LocalDate 常量(Instant、ZoneId zone)
  • 公共流〔t0〕date sunutil(本地日期结束独占)
  • 公共流日期时间(本地日期结束,期间步骤)
  • public long toepochsecond(本地时间,ZoneOffset)

让我们用例子来理解这些方法的使用。

1.ofInstant()方法

该方法用于从Instant和区域标识中获取LocalDate的实例。下面给出了该方法的语法。

public static LocalDate ofInstant(Instant instant, ZoneId zone)

示例:

在这个例子中,我们通过使用 ofInstant() 方法得到当前日期。方法返回系统的区域标识。

import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;

public class Main { 
    public static void main(String[] args){    
        // Create LocalDate 
        LocalDate localdate = LocalDate.ofInstant( 
                Instant.now(), 
                ZoneId.systemDefault()); 

        System.out.println("Current Date: "+ localdate);    
    }
}

当前日期:2020-07-23

Java LocalDate.datesUntil()方法

此方法用于获取日期的顺序流顺序。返回的流从一个日期开始,到结束日期(独占),递增 1 天。

public Stream<LocalDate> datesUntil(LocalDate endExclusive)

public Stream<LocalDate> datesUntil(LocalDate endExclusive, Period step)

示例:

import java.time.LocalDate;
import java.time.Period;
import java.util.stream.Stream;

public class Main { 
    public static void main(String[] args){    
        final LocalDate date1 = LocalDate.parse("2012-11-28");
        final LocalDate date2  = LocalDate.parse("2012-12-05");

          System.out.println("Day Stream");
          Stream<LocalDate> daysUntil = date1.datesUntil(date2);
          daysUntil.forEach(System.out::println);

          System.out.println("Month-Stream");
          Stream<LocalDate> monthsUntil = date1.datesUntil(date2,Period.ofMonths(1));
          monthsUntil.forEach(System.out::println);
    }
}

日流 2012-11-28 2012-11-29 2012-11-30 2012-12-01 2012-12-02 2012-12-03 2012-12-04 月流 2012-11-28

第二种方法

此方法将此LocalDate转换为 1970-01-01T00:00:00Z 纪元以来的秒数。

public long toEpochSecond(LocalTime time, ZoneOffset offset)

示例:

此方法将 localdate 与指定的时间相结合,并计算秒。请看下面的例子。

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneOffset;

public class Main { 
    public static void main(String[] args){
        // Creating date
        LocalDate date = LocalDate.parse("2012-12-20");
        System.out.println("Epoch Seconds : " + date.toEpochSecond(LocalTime.now(), ZoneOffset.of("Z")));
    }
}

历元秒:1356031765