`public class Demo {
/**
* 获取当前日期 | 时间
*/
public void now() {
// 日期
LocalDate localDate = LocalDate.now();
// 时间
LocalTime localTime = LocalTime.now();
// 日期+时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDate);
System.out.println(localTime);
System.out.println(localDateTime);
System.out.println(new Date());
}
/**
* LocalDateTime 和 Date 互相转换,使用instant转换,同时可以使用instant获取时间戳
*/
public void instant(){
Date date = new Date();
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
System.out.println(localDateTime);
Date from = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
System.out.println(from);
// instant获取时间戳
// 毫秒
System.out.println(localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
// 秒
System.out.println(localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond());
}
/**
* 时区类是 ZoneId 和 ZoneOffset,zoneID可以查看
*/
public void zone() {
/**
* 创建有时区概念的ZonedDateTime
*/
ZonedDateTime zonedDateTime = ZonedDateTime.of(LocalDateTime.now(), ZoneId.systemDefault());
ZonedDateTime zonedDateTime1 = LocalDateTime.now().atZone(ZoneId.of("Asia/Shanghai"));
ZonedDateTime zonedDateTime2 = LocalDateTime.now().atZone(ZoneOffset.of("+8"));
System.out.println("zone date time: " + zonedDateTime);
System.out.println("zone date time: " + zonedDateTime1);
System.out.println("zone date time: " + zonedDateTime2);
}
/**
* 格式化操作,线程安全
*/
public void format() {
LocalDateTime now = LocalDateTime.now();
String format1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS").format(now);
System.out.println(format1);
DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
.appendValue(ChronoField.YEAR)
.appendLiteral('-')
.appendValue(ChronoField.MONTH_OF_YEAR)
.appendLiteral('-')
.appendValue(ChronoField.DAY_OF_MONTH)
.appendLiteral(' ')
.appendValue(ChronoField.HOUR_OF_DAY)
.appendLiteral(':')
.appendValue(ChronoField.MINUTE_OF_HOUR)
.appendLiteral(':')
.appendValue(ChronoField.SECOND_OF_MINUTE)
.appendLiteral('.')
.appendValue(ChronoField.MILLI_OF_SECOND)
.toFormatter();
String format = now.format(dateTimeFormatter);
System.out.println(format);
}
/**
* Duration时间段,可以获取这段时间的总天数,总小时数等等
*/
public void duration() {
LocalDateTime from = LocalDateTime.of(2022, Month.JUNE, 1, 12, 00);
LocalDateTime to = LocalDateTime.of(2022, Month.JULY, 1, 12, 00);
Duration duration = Duration.between(from, to);
System.out.println(duration.toDays());
System.out.println(duration.toHours());
}
/**
* Java 8提供了丰富的时间计算方法 --> plus minus
*/
public void a() {
LocalDateTime now = LocalDateTime.now();
System.out.println(now.plusHours(1));
System.out.println(now.minusHours(1));
System.out.println(now.plusDays(1));
System.out.println(now.minusDays(1));
}
public static void main(String[] args) {
Demo demo = new Demo();
demo.now();
System.out.println("============instant==============");
demo.instant();
System.out.println("============zone==============");
demo.zone();
System.out.println("===============format================");
demo.format();
System.out.println("===============duration================");
demo.duration();
System.out.println("===============a================");
demo.a();
}
} `