5.1 格式化时间 SimpleDateFormat、printf

  1. public class Main{
  2. public static void main(String[] args){
  3. Date date = new Date();
  4. String strDateFormat = "yyyy-MM-dd HH:mm:ss";
  5. SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
  6. System.out.println(sdf.format(date)); // 2015-03-27 21:13:23
  7. //c的使用
  8. System.out.printf("全部日期和时间信息:%tc%n",date); // 星期一 九月 10 10:43:36 CST 2012
  9. }
  10. }

image.png
image.png

5.2 获取某个时间点 Calendar

  1. public class Main {
  2. public static void main(String[] args) {
  3. Calendar cal = Calendar.getInstance();
  4. int day = cal.get(Calendar.DATE);
  5. int month = cal.get(Calendar.MONTH) + 1;
  6. int year = cal.get(Calendar.YEAR);
  7. int dow = cal.get(Calendar.DAY_OF_WEEK);
  8. int dom = cal.get(Calendar.DAY_OF_MONTH);
  9. int doy = cal.get(Calendar.DAY_OF_YEAR);
  10. System.out.println("当期时间: " + cal.getTime()); // Fri Mar 27 21:44:15 CST 2015
  11. System.out.println("日期: " + day); // 27
  12. System.out.println("月份: " + month); // 3
  13. System.out.println("年份: " + year); // 2015
  14. System.out.println("一周的第几天: " + dow); // 6, 星期日为一周的第一天输出为 1,星期一输出为 2,以此类推
  15. System.out.println("一月中的第几天: " + dom); // 27
  16. System.out.println("一年的第几天: " + doy); // 86
  17. }
  18. }

5.3 时间戳转换成时间

  1. public class Main{
  2. public static void main(String[] args){
  3. Long timeStamp = System.currentTimeMillis(); //获取当前时间戳
  4. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  5. String sd = sdf.format(new Date(Long.parseLong(String.valueOf(timeStamp)))); // 时间戳转换成时间
  6. System.out.println("格式化结果:" + sd); // 2021-12-21 10:35:35
  7. }
  8. }

5.4 LocalDateTime

JDK 8 用 LocalDateTime 来代替 Calendar

  1. public static void main(String[] args) {
  2. LocalDateTime localDateTime = LocalDateTime.now();
  3. System.out.println(localDateTime); // 2021-12-22T08:56:53.923
  4. System.out.println(localDateTime.getYear()); // 2021
  5. System.out.println(localDateTime.getHour()); // 8
  6. }

5.5 Instant

JDK 8 用 Instant 来代替 Date,时区需要加 8 小时

  1. public static void main(String[] args) {
  2. Instant instant = Instant.now().plusMillis(TimeUnit.HOURS.toMillis(8));
  3. System.out.println(instant); // 2021-12-22T08:59:57.491Z
  4. }

5.6 DateTimeFormatter

JDK 8 使用 DateTimeFormatter 来代替 SimopleDateFormat,时间使用 LocalDateTime

  1. public static void main(String[] args) {
  2. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  3. String format = dtf.format(LocalDateTime.now());
  4. System.out.println(format); // 2021-12-22 09:04:47
  5. }

5.7 日期比较

  • 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
  • 使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
  • 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。