接上节:day046:时间日期类:Date_ZQyyds:)的博客-CSDN博客
一、SimpleDateFormat概述:
1.SimpleDateFormat可以对Date对象,进行格式化和解析
- 格式化(从Date到String):public final String format(Date date) 将Date对象转为指定格式(Thu Jan 01 08:00:00 CST 1970--->1970-1-1)
- 解析(从String到Date):public Date parse(String sourse) 将指定格式转为Date对象(1970-1-1--->Thu Jan 01 08:00:00 CST 1970)
(eg:Date对象Thu Jan 01 08:00:00 CST 1970不符合人们的阅读习惯,可以将其转为1970-1-1的形式,符合人们的阅读习惯)
2.常用的模式字母及对应关系(注意大小写!):
- y 年
- M 月
- d 日
- H 时
- m 分
- s 秒
eg:
2020-11-12 06:12:36 ---> yyyy-MM-dd HH:mm:ss
2020年11月12日 06:12:36 ---> yyyy年MM月dd日 HH:mm:ss 格式一定要完全对应
3.SimpleDateFormat的构造方法
- public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认格式
- public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat,使用指定格式
代码示例:
package com.itheima.Date;
/*SimpleDateFormat可以对Date对象,进行格式化和解析
格式化(从Date到String)
解析(从String到Date)*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormat_Demo3 {
public static void main(String[] args) throws ParseException {
//SimpleDateFormat格式化:
//创建一个Date对象
Date date = new Date();
//创建一个想要的指定格式
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将Date对象格式化为指定格式
String result1 = sdf1.format(date);
System.out.println(result1);
//输出结果:2022-05-15 22:31:55
//SimpleDateFormat解析:
String s = "2022-05-15 22:31:55";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//注:这里的格式一定要与字符串统一,字符串里是-,则格式也是-;字符串里若是年月日,格式里也要是年月日
Date result2 = sdf2.parse(s);
System.out.println(result2);
//输出结果:Sun May 15 22:31:55 CST 2022
}
}
二、JDK8新增日期类
1.在JDK8中,Date被分为三个类:
- LocalDate 只包含日期(年月日) 2020年11月11日
- LocalTime 只包含时间(时分秒) 13:10:10
- LocalDateTime 包含时间加日期(年月日时分秒) 2020年11月11日13:10:10
2.LocalDateTime对象的创建方法
- public static LocalDateTime now() 获取当前系统时间
- public static LocalDateTime of (年,月,日,时,分,秒) 使用指定年月日时分秒初始化一个 LocalDateTime对象
代码示例:
public class JDK8Date_Demo {
public static void main(String[] args) {
//获取当前系统时间
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
//输出结果:2022-05-15T23:15:52.791636
//使用指定年月日时分秒初始化一个 LocalDateTime对象
LocalDateTime time = LocalDateTime.of(2020, 11, 23, 15, 30, 13);
System.out.println(time);
//输出结果:2020-11-23T15:30:13
}
}
3.LocalDateTime获取方法
创建一个LocalDateTime对象,直接使用对象名.方法名()使用即可:
4.LocalDateTime转换方法
将LocalDateTime转换为LocalDate或者LocalTime,可以使用以下方法,创建一个LocalDateTime对象,直接使用对象名.方法名()使用即可:
5.LocalDateTime的格式化和解析:
-
格式化步骤:先创建一个LocalDateTime对象,调用LocalDateTime的of方法创建,再用
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");指定格式,
再用LocalDateTime对象调用format方法,并将指定格式对象作为形参传入即可。
-
解析步骤:先创建一个字符串,再根据字符串的格式,调用DateTimeFormatter的ofPattern方法, 再创建一个LocalDateTime对象,调用LocalDateTime的parse方法创建,并将字符串对象和指定格式对象作为形参传入即可
代码示例:
public class LocalDateTime_Demo5 {
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.of(2020, 11, 11, 8, 10, 33);
method1(localDateTime);
// public static LocalDateTime parse(准备解析的字符串,解析格式)
String s = "2022年11月12日 13:14:15";
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
LocalDateTime parse = localDateTime.parse(s, pattern);
System.out.println(parse);
//输出结果:2022-11-12T13:14:15
}
private static void method1(LocalDateTime localDateTime) {
// public String format(指定格式) 把一个LocalDateTime格式化为一个字符串
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String s = localDateTime.format(pattern);
System.out.println(s);
//输出结果:2020年11月11日 08:10:33
}
}