JDK7之前时间日期类的使用
1.创建日期类及格式化打印
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String time = sdf.format(date);
System.out.println(time);
2021-02-21 19-45-55
SimpleDateFormat将日期类按照模式参数格式化打印出日期字符串。
2.SimpleDateFormat解析字符串日期类
Date da = sdf.parse(time);
System.out.println(da);
Sun Feb 21 19:45:55 CST 2021
我们直接使用SimpleDateFormat对象调用解析方法即可。
3
我们发现在jdk7无论是格式化打印时间,还是解析时间字符串,都是由SimpleDateFormat日期格式类实现的。
JDK8日期类使用
在jdk8新增三个日期类
- LocalDate 日期类
- LocalTime 时间类
- LocalDateTime 时间日期类
以时间日期类为例
1.创建时间日期类的两种方法
//获取当前时间日期对象 静态方法创建对象
LocalDateTime now = LocalDateTime.now();
//指定时间参数日期对象 静态方法创建对象
LocalDateTime artiTime= LocalDateTime.of(2020, 11, 2, 2, 2, 2);
又因为时间日期类比两外两个类内容详细,可以通过toXXX方法转换
toLocalDate ()
toLocalTime ()
2.我们来看看格式化吧还是
发现日期格式类也采用了静态方法创建对象
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
我们把代码补全,笔者认为最戏剧性的是下面第三行代码,时间日期类对象调用了一个.format()方法,里面的参数竟然是DateTimeFormatter对象。回想上面jdk7 SimpleDateFormat包办一切。
LocalDateTime ntime = LocalDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
String s = ntime.format(dtf);
System.out.println(s);
3.那么怎么解析时间日期字符串?会不会也有戏剧性的一幕
这里有一个时间字符串
String stime="2021年02月21日 20时07分55秒";
补全代码
String stime="2021年02月21日 20时07分55秒";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
LocalDateTime parse = LocalDateTime.parse(stime, dtf);
System.out.println(parse);
我们又发生了戏剧性的变化,在JDK8后解析时间字符串的主动权跑到了时间日期类手里,并且由大量的静态方法。
小结
在JDK8无论是格式化时间,还是解析时间字符串,主动权都跑到了时间日期类手中。