日期 API 改进
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