java8中的Clock,LocalTime ,LocalDate, LocalDateTime時間類
Clock
Clock類提供了訪問當前日期和時間的方法,某一個特定的時間點也可以使用Instant類來表示
public class ClockTimeTest {
private static final Consumer CONSUMER = System.out::println;
public static void main(String[] args) {
/*時區*/
Clock clock = Clock.systemDefaultZone();
CONSUMER.accept("當前時區:" + clock);
/*獲取當前的微秒數*/
long millis = clock.millis();
CONSUMER.accept("當前的微毫秒:" + millis);
Instant instant = clock.instant();
Date from = Date.from(instant);
CONSUMER.accept("當前時間:" + from);
}
}
LocalTime
LocalTime 定義了一個沒有時區信息的時間
public static void main(String[] args) {
/*當期的時分秒*/
/*LocalTime localTime1 = LocalTime.now();
LocalTime localTime2 = LocalTime.now();*/
/*自定義時分秒*/
LocalTime localTime1 = LocalTime.of(11, 22, 33);
LocalTime localTime2 = LocalTime.of(12, 22, 33);
CONSUMER.accept(localTime1);
CONSUMER.accept(localTime2);
/*判斷時間二是否在時間一直之後*/
CONSUMER.accept(localTime1.isAfter(localTime2));
/*兩個時間的小時差*/
long between = ChronoUnit.HOURS.between(localTime1, localTime2);
/*兩個時間的分鐘差*/
long between1 = ChronoUnit.MINUTES.between(localTime1, localTime2);
CONSUMER.accept(between);
CONSUMER.accept(between1);
}
}
LocalDate
LocalDate 表示了一個確切的日期,下面的例子展示瞭如何給Date對象加減天/月/年。另外要注意的是這些對象是不可變的,操作返回的總是一個新實例。
public class LocalDateTest {
private static final Consumer CONSUMER = System.out::println;
public static void main(String[] args) {
/*當前日期*/
LocalDate today = LocalDate.now();
CONSUMER.accept(today);
/*獲得1天后的日期*/
LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);
CONSUMER.accept(tomorrow);
/*獲得1天前的日期*/
LocalDate yesterday = today.minusDays(1);
CONSUMER.accept(yesterday);
/*查看2020年1月15號 是星期幾*/
LocalDate independenceDay = LocalDate.of(2020, Month.JANUARY, 15);
DayOfWeek dayOfWeek = independenceDay.getDayOfWeek();
CONSUMER.accept(dayOfWeek);
}
}
LocalDateTime
LocalDateTime 同時表示了時間和日期,相當於前兩節內容合併到一個對象上了。
LocalDateTime和LocalTime還有LocalDate一樣,都是不可變的。LocalDateTime提供了一些能訪問具體字段的方法。
public class LocalDateTimeTest {
private static final Consumer CONSUMER = System.out::println;
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
CONSUMER.accept(now);
/*設置一個時間段*/
LocalDateTime sylvester = LocalDateTime.of(2020, Month.JANUARY, 14, 14, 26, 59);
CONSUMER.accept(sylvester);
/*星期的第幾天*/
DayOfWeek dayOfWeek = sylvester.getDayOfWeek();
CONSUMER.accept(dayOfWeek);
/*月份的第幾天*/
int dayOfMonth = sylvester.getDayOfMonth();
CONSUMER.accept(dayOfMonth);
/*一年的第幾天*/
int dayOfYear = sylvester.getDayOfYear();
CONSUMER.accept(dayOfMonth);
}
}