Date类介绍
java.util.Date:表示日期和时间的类
Date 表示特定的瞬间,精确到毫秒
把日期转换为毫秒
时间原点(0毫秒):1970.01.01 00:00:00
当前日期到时间原点一共经历了多少
注意:
中国属于东八区,会把时间增加8个小时
所以0毫秒为1970.01.01 08:00:00
毫秒转换为日期
1天 = 24*60*60=86400s = 86400*1000=86400000ms
构造方法
空参数构造方法
Date() 获取当前系统的时间和日期
Date date = new Date ( ) ;
System . out. println ( date) ;
带参数构造方法
Date(long date): 把毫秒值转换为Date日期
Date date = new Date ( 0L ) ;
System . out. println ( date) ;
Date date2 = new Date ( 1621393772455L ) ;
System . out. println ( date2) ;
常用方法
getTime()
日期转换为毫秒,返回long类型值
Date date = new Date ( ) ;
long time = date. getTime ( ) ;
System . out. println ( time) ;
DateFormat类
java.text.DateFormat 是日期/时间格式化子类的抽象类,
作用:
格式化 (日期->文本),解析(文本->日期)
SimpleDateFormat类
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用它的子类
java.text.SimpleDateFormat extends DateFromat
构造方法
SimpleDateFormat(String pattern)
使用给定模式 SimpleDateFormat并使用默认的FORMAT语言环境的默认
日期格式符号。
参数:
String pattern:传递指定的模式
模式:
区分大小写
y 年
M 月
d 日
H 时
m 分
s 秒
yyyy-MM-dd HH:mm:ss
模式中的字母不能改,但连接符可以改
yyyy年MM月dd日 HH时mm分ss秒
常用成员方法
format()
传入date类型数据,返回字符串,相当于格式化
使用DateFormat类中的方法format,把日期格式化为文本,
使用步骤:
1.创建SimpleDateFormat对象,构造方法中传递指定的模式
2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的
模式,把Date日期格式化为符合模式的字符串
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy年MM月dd日 HH时mm分ss秒" ) ;
Date date = new Date ( ) ;
String d = sdf. format ( date) ;
System . out. println ( date) ;
System . out. println ( d) ;
parse()
传入给定模式的字符串,返回Date类型数据
例: 传入:2021年05月26日 09时46分17秒
返回:Wed May 26 09:46:17 CST 2021
使用DateFormat类中的方法parse,把文本解析为日期
使用步骤:
1.创建SimpleDateFormat对象,构造方法中传递指定的模式
2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式
的字符串,解析为date日期
注意:
parse方法声明了一个异常
如果字符串和构造方法的模式不一样,那么程序就会抛出异常,用
throws抛出异常或者try case自己解决
public class Demo01DateFormat {
public static void main ( String [ ] args) throws ParseException {
demo02 ( ) ;
}
private static void demo02 ( ) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy年MM月dd日 HH时mm分ss秒" ) ;
Date date = sdf. parse ( "2021年05月26日 09时46分17秒" ) ;
System . out. println ( date) ;
}
练习
计算一个人从出生了多少天
package day01. demo03 ;
import java. text. ParseException ;
import java. text. SimpleDateFormat ;
import java. util. Date ;
import java. util. Scanner ;
public class Demo02test {
public static void main ( String [ ] args) throws ParseException {
Scanner sc = new Scanner ( System . in) ;
System . out. println ( "请输入出生日期:格式yyyy-MM-dd" ) ;
String birth = sc. next ( ) ;
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
Date da = sdf. parse ( birth) ;
long time1 = da. getTime ( ) ;
Date date = new Date ( ) ;
long now = date. getTime ( ) ;
long time = now- time1;
System . out. println ( time/ 1000 / 60 / 60 / 24 ) ;
}
}