DateFormat是日期/时间格式化子类的’抽象类’
作用:
格式化(日期——>文本)、解析(文本——>日期)Date
成员方法:
1.String format(Date date):按照指定模式,把Date日期,格式化为符合模式的字符串
2.Date parse (String source):把符合模式的字符串,解析为Date日期
DateFormat是一个抽象类,无法创建对象使用,可以使用其子类SimpleDateFormat
SimpleDateFormat extends DateFormat
构造方法:
SimpleDateFormat(String pattern):使用给定模式并使用默认语言环境的日期格式符号的构造方法
参数:
String pattern:传递指定的模式
模式:(模式中的字母不能更改,连接符号可以改变)
区分大小写 eg: “yyyy-MM-dd” //年月日 “HH:mm:ss” //时分秒
笔记
private static void demo() throws ParseException {
//1.String format(Date date):按照指定模式,把Date日期,格式化为符合模式的字符串
//创建SimpleDateFormat对象,在构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒");
Date date01 = new Date();
//调用SimpleDateFormat对象中的方法format
String timeText = sdf.format(date01);
System.out.println("格式化之后的文本:" + timeText);
System.out.println("一般的Date格式:" + date01);
//2.Date parse (String source):把符合模式的字符串,解析为Date日期
/*
-----public Date parse(String source) throws ParseException-----
parse方法声明了一个异常叫ParseException(解析异常)
如果字符串和构造方法中的模式不一样,那么程序会抛出该异常,
调用一个抛出异常的方法,就必须处理异常,要么throws抛出异常,要么try-catch自己处理异常
*/
Date date02 = sdf.parse("2021年03月29日 10点30分11秒");
//Date date02 = sdf.parse("2021年03月29日 10点30分11"); //模式不一样,抛出解析异常
System.out.println("解析后的日期:" + date02);
}
public static void main(String[] args) throws ParseException {
demo();
}
运行结果:
自己的测试练习
计算自己从出生到现在活了多少天
分析:
1.Scanner输出日期
2.DateFormat类的parse方法,把输入的字符串解析为Date格式
3.把Date格式的日期转换为毫秒值
4.获取当前日期,转换为毫秒值
5.当前毫秒值减去生日毫秒值
6.把毫秒值的差值转换为天(s/1000/60/60/24)
public static void main(String[] args) throws ParseException {
//1.Scanner输出日期
Scanner sca = new Scanner(System.in);
System.out.println("---欢迎使用‘被自己消耗的时间’计算器---");
System.out.println("本计算器用于计算你在这个世界上呼吸的天数");
System.out.println("请输入的你生日:(格式为:年.月.日)");
String birthdayDateS = sca.next();
//2.DateFormat类的parse方法,把输入的字符串解析为Date格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
Date birthdayDate = sdf.parse(birthdayDateS);
//3.把Date格式的日期转换为毫秒值
long birthdayTime = birthdayDate.getTime();
//4.获取当前日期,转换为毫秒值
long todayTime = new Date().getTime();
//5.当前毫秒值减去生日毫秒值
long time = todayTime - birthdayTime;
//6.把毫秒值的差值转换为天(s/1000/60/60/24)
System.out.println("从你出生到现在,你呼吸了"+time/1000/60/60/24+"天了,时间是不是过的很快?");
System.out.println("温馨意识: 若某天你感觉呼吸困难,请先前往医院进行核酸检测再申请办理入院大礼包哦!");
运行结果:
总结
日期的运用要注意时区,如果涉及到计算要先把时间转换为毫秒来进行计算。