JDK8以前、以后格式化时间的方法

26 阅读1分钟

JDK8以前

 // 创建时间对象
 Date date = new Date();
 System.out.println("时间格式化前:" + date);

 // 创建时间格式化对象
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 String format = sdf.format(date);
 System.out.println("时间格式化后:" + format);

在这里插入图片描述

JDK8以前的时间有以下四个缺点,故Java在JDK8对时间对象做了改动

  1. 设计不合理,获取当前的年份需要加1900
 Date date = new Date();
 System.out.println(date.getYear() + 1900);

在这里插入图片描述

  1. new的时间对象都是可变对象,修改后会丢失最开始的时间信息
 Date data = new Date();
 System.out.println(data);

 // 修改后丢失了最开始的时间信息
 data.setTime(123);
 System.out.println(data);

在这里插入图片描述

  1. 不能精确到纳秒,只能精确到毫秒
  2. 线程是不安全的

JDK8以后

// 创建时间对象
LocalDateTime ldt1 = LocalDateTime.now();
System.out.println("格式化前的时间" + ldt1);

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

// 也可反向格式化,效果一样:String format = ldt1.format(dtf);
String format = dtf.format(ldt1);
System.out.println("格式化后的时间" + format);

String dateStr = "1999年01月10日 12:10:59";
LocalDateTime ldt2 = LocalDateTime.parse(dateStr, dtf);
System.out.println("将字符串时间转为时间对象:" + ldt2);

在这里插入图片描述

首次发布

hezhongying.blog.csdn.net/article/det…