1.Date
构建Date对象
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
Date主要使用无参构造和long类型创建:
Date date = new Date(); System.out.println(date); // Wed Oct 26 15:25:37 CST 2022 // 接收一个 long 类型的参数,该参数是从 1970-01-01 00:00:00.000 到当前时间的毫秒数 Date date1 = new Date(100010001000L); System.out.println(date1); // Sat Mar 03 20:33:21 CST 1973
Date类主要API
compareTo:
时间比较
Date date = new Date(); Date date1 = new Date(100010001000L); System.out.println(date1.compareTo(date)); // -1
getTime:
获取时间毫秒数
Date date = new Date(); long time = date.getTime(); System.out.println(time); // 1666769335919
2.Calendar
构建Calendar对象
Calendar是一个抽象类不能像Date类直接通过new创建。通过内部的getInstance方法创建
Calendar calendar = Calendar.getInstance(); System.out.println(calendar); //java.util.GregorianCalendar[time=1666769482809,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.c
Calendar类常用API
Calendar c = Calendar.getInstance(); // 获取年份 System.out.println(c.get(Calendar.YEAR)); // 2022 // 获取月份 System.out.println(c.get(Calendar.MONTH) + 1); // 10 // 获取日期 System.out.println(c.get(Calendar.DAY_OF_MONTH)); // 26 // 获取12小时制小时数 System.out.println(c.get(Calendar.HOUR)); // 3 // 获取24小时制小时数 System.out.println(c.get(Calendar.HOUR_OF_DAY)); // 15 // 获取分钟数 System.out.println(c.get(Calendar.MINUTE)); // 34 // 获取秒数 System.out.println(c.get(Calendar.SECOND)); // 16
注意:Calendar类并未提供格式化相关的方法,所以需要自己进行拼接使用✨
3.第三代日期表示法
Java 8中,日期和时间被明确划分为LocalDate和LocalTime,LocalDate无法包含时间,LocalTime无法包含日期
构建第三代日期表示法的对象
通过内置的now()方法新建
LocalDate now = LocalDate.now(); System.out.println(now); // 2022-10-26 LocalTime now1 = LocalTime.now(); System.out.println(now1); // 15:39:50.061623500 LocalDateTime now2 = LocalDateTime.now(); System.out.println(now2); // 2022-10-26T15:39:50.061623500
第三代日期表示法常用API
基本使用方法:
LocalDateTime ldt = LocalDateTime.now(); // 获取年份 System.out.println(ldt.getYear()); // 2022 // 获取月份的英文 System.out.println(ldt.getMonth()); // OCTOBER // 获取月份的数字表示 System.out.println(ldt.getMonthValue()); // 10 // 获取日期数 System.out.println(ldt.getDayOfMonth()); // 26 // 获取星期数 System.out.println(ldt.getDayOfWeek()); // WEDNESDAY // 获取小时数 System.out.println(ldt.getHour()); // 15 // 获取分钟数 System.out.println(ldt.getMinute()); // 42 // 获取秒数 System.out.println(ldt.getSecond()); // 30
4.日期格式化
Java中使用SimpleDateFormat来进行日期格式化操作:
Date格式化🙌
SimpleDateFormat.format()方法将Date转为String:
Date date = new Date(); // 使用SimpleDateFormat,自定义格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy--MM--dd HH:mm:ss"); String format = dateFormat.format(date); System.out.println(format); // 2022--10--26 15:46:56
SimpleDateFormat.parse()方法将String转为Date:
// 使用SimpleDateFormat,自定义格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy--MM--dd HH:mm:ss"); String format = "2022--10--26 15:46:56"; Date parse = null; try { parse = dateFormat.parse(format); } catch (ParseException e) { throw new RuntimeException(e); } System.out.println(parse); // Wed Oct 26 15:46:56 CST 2022
Calendar格式化方案同Date操作🧨
第三代日期时间的格式化操作🎎
格式化 localDate 自带format()方法,需要传参DateTimeFormatter:
LocalDate now = LocalDate.now(); DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd"); String format = now.format(yyyyMMdd); System.out.println(format); // 20221026
5.时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
// 获取当前时间戳 Instant now = Instant.now(); System.out.println(now); // 2022-10-26T07:56:53.561113400Z // 时间戳 --> Date Date date = Date.from(now); System.out.println(date); // Wed Oct 26 15:56:53 CST 2022 // Date --> 时间戳 Instant instant = date.toInstant(); System.out.println(instant); // 2022-10-26T07:56:53.561Z