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);
}
}