Lambda表达式和函数式接口
Lambda表达式(也称为闭包)是Java 8中最大和最令人期待的语言改变。它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理
最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成
Date/Time API
Clock
Clock类使用时区来返回当前的纳秒时间和日期。Clock可以替代System.currentTimeMillis()和TimeZone.getDefault()。
final Clock clock = Clock.systemUTC();
System.out.println( clock.instant() );
System.out.println( clock.millis() );
LocalDate和LocalTime
/**
* LocalDate仅仅包含ISO-8601日历系统中的日期部分
*/
private void localDate() {
final LocalDate date = LocalDate.now();
System.out.println(date);//2017-08-31
}
/**
* LocalTime则仅仅包含该日历系统中的时间部分
*/
private void localTime() {
final LocalTime time = LocalTime.now();
System.out.println(time);//15:54:15.703
}
LocalDateTime
LocalDateTime类包含了LocalDate和LocalTime的信息
private void localDateTime(){
final LocalDateTime datetime = LocalDateTime.now();
System.out.println( datetime );//2017-08-31T15:57:07.767
}
格式化
使用format方法,其中date是上面LocalDate、LocalTime、LocalDateTime和ZoneDateTime的实例
public static final DateTimeFormatter DATE_FORAMTTER = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.CHINESE);
System.out.println( date.format(DATE_FORAMTTER));
Duration类,它持有的时间精确到秒和纳秒。这使得我们可以很容易得计算两个日期之间的不同
private void duration() {
final LocalDateTime from = LocalDateTime.of(2014, Month.APRIL, 16, 0, 0, 0);
final LocalDateTime to = LocalDateTime.of(2015, Month.APRIL, 16, 23, 59, 59);
final Duration duration = Duration.between(from, to);
System.out.println("Duration in days: " + duration.toDays());
System.out.println("Duration in hours: " + duration.toHours());
}
String转Date
private void StringToDate(String dateStr) {
LocalDate date = LocalDate.parse(dateStr, DATE_FORAMTTER);
System.out.println(date.format(DATE_FORAMTTER));
}