LocalDateTime
JDK8新特性里提供了3个时间类:LocalDate、LocalTime、LocalDateTime
SimpleDateFormat是线程不安全的、DateTimeFormatter是线程安全的
具体用法
public static void main(String[] args) { /** * LocalDate:仅含年月日 * LocalTime:仅含时分秒 * LocalDateTime:含年月日时分秒 */ //Instant: 返回Java纪元(epoch),即1970-01-01T00:00:00Z(1970年1月1日00:00 GMT)以来的时间点 //getEpochSecond()返回自纪元以来经过的秒数。 //getNano()方法返回自上一秒开始以来的纳秒数。 Instant now = Instant.now(); System.out.println(now.getEpochSecond() + "." + now.getNano()); System.out.println(System.currentTimeMillis()); System.out.println("----------------Clock------------------"); //Clock : 时钟 Clock clock = Clock.systemDefaultZone(); System.out.println("当前系统时区:" + clock); System.out.println("当前时间毫秒:" + clock.millis()); Date from = Date.from(clock.instant()); System.out.println("当前时间(Date):" + from); System.out.println("----------------Timezones------------------"); //Timezones : 时区 ZoneId zoneId = ZoneId.of("Asia/Shanghai"); System.out.println("上海时区:" + zoneId); System.out.println("上海时区规则:" + zoneId.getRules()); System.out.println("----------------LocalDate------------------"); //LocalDate: 只包含日期,不包含时间 LocalDate nowDate = LocalDate.now(); System.out.println("今天的日期:" + nowDate); System.out.println("今天是一年中的第多少周:" + nowDate.getDayOfMonth()); System.out.println("今天是周几(英文):" + nowDate.getDayOfWeek()); System.out.println("今天是一年中的第多少天:" + nowDate.getDayOfYear()); System.out.println("今天的月份(英文):" + nowDate.getMonth()); System.out.println("今天的月份(数字):" + nowDate.getMonthValue()); System.out.println("今天的年份(数字):" + nowDate.getYear()); System.out.println("指定月份:" + nowDate.withMonth(11)); LocalDate tomorrow = nowDate.plus(1, ChronoUnit.DAYS); LocalDate tomorrow1 = nowDate.plusDays(1); System.out.println("明天的日期: " + tomorrow); System.out.println("明天的日期: " + tomorrow1); System.out.println("昨天的日期: " + nowDate.minusDays(1)); System.out.println("20年前的今天是: " + LocalDate.now().minus(2, ChronoUnit.DECADES)); System.out.println("定义的日期是: " + LocalDate.of(2020, Month.MARCH, 12)); System.out.println("字符转换日期:" + LocalDate.parse("2020-02-02")); System.out.println("判断日期先后:" + nowDate.isAfter(LocalDate.parse("2020-02-02"))); System.out.println("----------------LocalTime------------------"); //LocalTime: 只包含时间,不包含日期 LocalTime nowTime = LocalTime.now(); System.out.println("当前系统默认时区时间:" + nowTime); System.out.println("当前系统默认时区时间(不包含毫秒数):" + nowTime.withNano(0)); LocalTime losTime = LocalTime.now(ZoneId.of("America/Los_Angeles")); System.out.println("洛杉矶时区当前时间:" + losTime); System.out.println("时区转换:" + losTime.adjustInto(nowTime)); System.out.println("当前小时:" + nowTime.getHour()); System.out.println("当前分钟:" + nowTime.getMinute()); System.out.println("当前秒:" + nowTime.getSecond()); System.out.println("指定小时: " + nowTime.withHour(12)); System.out.println("指定毫秒值" + nowTime.withNano(12345)); System.out.println("两个时间时间差:" + ChronoUnit.HOURS.between(losTime, nowTime)); System.out.println("一小时前:" + nowTime.minus(1, ChronoUnit.HOURS)); System.out.println("一小时后:" + nowTime.plusHours(1)); System.out.println("定义的时间是:" + LocalTime.of(13, 59, 59)); System.out.println("字符转换时间:" + LocalTime.parse("13:59:59")); System.out.println("判断时间先后:" + nowTime.isAfter(LocalTime.parse("13:59:59"))); System.out.println("----------------LocalDateTime------------------"); //LocalDateTime: 包含时间,日期 LocalDateTime nowDateTime = LocalDateTime.now(); System.out.println("当前时间:" + nowDateTime); System.out.println("当前时间戳(秒):" + nowDateTime.toEpochSecond(ZoneOffset.of("+8"))); System.out.println("当前时间戳(毫秒):" + nowDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()); System.out.println("当前年份:" + nowDateTime.getYear()); System.out.println("当前分钟:" + nowDateTime.getMinute()); System.out.println("定义的时间是:" + LocalDateTime.of(2020, 2, 28, 12, 59, 59)); System.out.println("2年后 : " + nowDateTime.plusYears(2L)); System.out.println("3天前 : " + nowDateTime.minusDays(3L)); System.out.println("指定小时: " + nowDateTime.withHour(12)); System.out.println("字符转换时间:" + LocalDateTime.parse("2020-02-27 20:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); System.out.println("Date转换:" + new Date().toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime()); System.out.println("转换Date:" + Date.from(nowDateTime.toInstant(ZoneOffset.of("+8")))); System.out.println("判断时间先后:" + nowDateTime.isAfter(LocalDateTime.of(2020, 2, 28, 12, 59, 59))); System.out.println("----------------Formatter------------------"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("HH:mm:ss"); System.out.println(formatter.format(nowDateTime)); System.out.println(formatter1.format(nowDate)); System.out.println(formatter2.format(nowTime)); } }

浙公网安备 33010602011771号