1.Date类
类 Date 表示特定的瞬间,精确到毫秒。
毫秒:千分之一秒
作用:可以对时间和日期进行计算
可一把日期转换为毫秒进行计算,计算完毕,再转换为日期。
把日期转换为毫秒:
当前的日期:2020-11-10;
时间原点(0毫秒):1970-1-1 00:00:00
计算当前日期到原点一共多少毫秒
把毫秒转换为日期:
1天 = 24x60x60 = 86400秒 = 86400000毫秒
注意:
中国属于东八区,需要把时间加8小时
Date的构造方法
1.无参构造方法
Date()的空参数构造方法:
获取当前系统的时间和日期
2.有参构造方法
Date()的带参数构造方法:
传递毫秒值,把毫秒转换为Date日期
public class Demo01Date {
public static void main(String[] args) {
demo01();
demo02();
}
/*
Date()的空参数构造方法:
获取当前系统的时间和日期
*/
private static void demo01(){
Date date = new Date();
System.out.println(date);//Tue Nov 10 21:27:06 CST 2020
}
/*
Date()的带参数构造方法:
传递毫秒值,把毫秒转换为Date日期
*/
private static void demo02(){
Date d1 = new Date(0);
System.out.println(d1);
Date d2 = new Date(2081111111111L);
System.out.println(d2);
}
}
Date的成员方法
long getTime() 把日期转化为毫秒
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
package demo02.Date;
import java.util.Date;
/*
类 Date 表示特定的瞬间,精确到毫秒。
毫秒:千分之一秒
作用:可以对时间和日期进行计算
可一把日期转换为毫秒进行计算,计算完毕,再转换为日期。
把日期转换为毫秒:
当前的日期:2020-11-10;
时间原点(0毫秒):1970-1-1 00:00:00
计算当前日期到原点一共多少毫秒
把毫秒转换为日期:
1天 = 24x60x60 = 86400秒 = 86400000毫秒
注意:
中国属于东八区,需要把时间加8小时
*/
public class Demo01Date {
public static void main(String[] args) {
demo03();
}
/*
Date类的成员方法:
long getTime() 把日期转化为毫秒
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。*/
private static void demo03(){
Date date = new Date();
System.out.println(date.getTime());
}
}
2.DateFormat类和SimpleDateFormat类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
其中常用的模式有:
DateFormat类是日期/时间格式化子类的抽象类
作用:
格式化(也就是日期 -> 文本)、解析(文本-> 日期)
成员方法:
String format(Date date) //按照指定的模式,把Date日期格式化为符合模式的字符串
Date parse(String source) //把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,
可以使用
子类SimpleDateFormat类
构造方法:(带参数:模式)
SimpleDateFormat(String pattern) //用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
参数:
String pattern://传递指定的模式
模式:
区分大小写
y 年
M 月
d 日
H 时
m 分
s 秒
写对应的模式,会把模式替换为对应的日期和时间:
“yyyy-MM-dd HH:mm:ss”
“yyyy年MM月dd日 HH时mm分ss秒”
注意:
模式中的字母不能更改,连接模式的符号可以改
1. format方法
使用format方法;把日期格式化为文本
String format(Date date) //按照指定的模式,把Date日期格式化为符合模式的字符串
使用步骤:
1.创建SimpleDateFormat对象,构造方法中传递指定的模式
2.调用format方法,按照构造方法指定的模式,把Date日期转化为字符串
private static void demo01() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date = new Date();
String text = sdf.format(date);
System.out.println(date);//Tue Nov 10 21:54:56 CST 2020
System.out.println(text);//2020年11月10日 21时54分56秒
}
2.parse方法
调用parse,把文本解析为日期
Date parse(String source) //把符合模式的字符串,解析为Date日期
使用步骤:
1.创建SimpleDateFormat对象,构造方法中传递指定的模式
2.调用方法parse,把符合构造方法中模式的字符串解析日期
private static void demo02(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = sdf.parse("yyyy-MM-dd HH:mm:ss");
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(date);
}
练习:使用日期时间相关的API,计算一个人已经出生了多少天
分析:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Demo03Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String birthday = sc.next();//用户输入出生日期,格式为:2001-11-9
Date date = ToDate(birthday); //调用SimpleDateFormat的parse方法,将字符串出生日期转换为Date对象
long datehaomiao = date.getTime();//获取date对象的毫秒数
Date thistime = new Date();
long thistimehaomiao = thistime.getTime();//获取当前的时间的毫秒数
long birthdayhaomiao = thistimehaomiao - datehaomiao;//当前的毫秒数-出生日期的毫秒数
long day = birthdayhaomiao/1000/60/60/24;//通过计算,求出天数
System.out.println(day);
}
private static Date ToDate(String birthday) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(birthday);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}