一、Date类概述
表示特定的时间,精确到毫秒
java.util.Date:表示日期和时间的类
类Date表示特定的瞬间,精确到毫秒
特定的瞬间:一个时间点,一刹那的时间
2019.11.03 09:55:33:333瞬间
毫秒值的作用:可以对时间和日期进行计算
2099年01-03到2122年02-25中间有多少天
可以将日期转换为毫秒进行计算,计算完毕再把毫秒转换为日期
把日期转换为毫秒
当前的日期:2099-01-03
时间原点:1970-01-01 00:00:00(Java规定)(英国格林威治时间)
就是计算当前日期到时间原点之间一共经历了的多少毫秒
把毫秒转换为日期
1天=24×60×60=86400秒=86400000毫秒
【注意】
中国属于东八区,会把时间增加8个小时
1970-01-01 08:00:00
package Day12_Demo02;
/*
java.util.Date:表示日期和时间的类
类Date表示特定的瞬间,精确到毫秒
特定的瞬间:一个时间点,一刹那的时间
2019.11.03 09:55:33:333瞬间
毫秒值的作用:可以对时间和日期进行计算
2099年01-03到2122年02-25中间有多少天
可以将日期转换为毫秒进行计算,计算完毕再把毫秒转换为日期
把日期转换为毫秒
当前的日期:2099-01-03
时间原点:1970-01-01 00:00:00(Java规定)(英国格林威治时间)
就是计算当前日期到时间原点之间一共经历了的多少毫秒
把毫秒转换为日期
1天=24×60×60=86400秒=86400000毫秒
【注意】
中国属于东八区,会把时间增加8个小时
1970-01-01 08:00:00
*/
public class Demo01Date {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());//获取当前系统一共到1970-01-01 00:00:00经历了多少毫秒//输出1572763119829
}
}
二、Date类的构造方法和成员方法
1、构造方法
package Day12_Demo02;
import java.util.Date;
public class Demo02Date {
public static void main(String[] args) {
demo01();
demo02();
}
/*
Date类的空参数构造方法:
Date()获取的就是当前系统的日期和时间
*/
private static void demo01() {
Date date=new Date();
System.out.println(date);//Sun Nov 03 14:45:19 CST 2019
}
/*
Date类的带参数构造方法:
Date(long date):传递毫秒值,把毫秒转换为Date日期
*/
private static void demo02() {
Date d1=new Date(0L);
System.out.println(d1);//Thu Jan 01 08:00:00 CST 1970
Date d2=new Date(15663333325585555L);
System.out.println(d2);//Mon Apr 11 11:46:25 CST 498321
}
}
2、成员方法
Date类的成员方法
long getTime()把日期转为毫秒(相当于(System.currentTimeMillis())
返回自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数
String toLocaleString();根据本地格式转换日期对象
package Day12_Demo02;
import java.util.Date;
public class Demo02Date {
public static void main(String[] args) {
demo01();
demo02();
demo03();
}
/*
Date类的空参数构造方法:
Date()获取的就是当前系统的日期和时间
*/
private static void demo01() {
Date date=new Date();
System.out.println(date);//Sun Nov 03 14:45:19 CST 2019
}
/*
Date类的带参数构造方法:
Date(long date):传递毫秒值,把毫秒转换为Date日期
*/
private static void demo02() {
Date d1=new Date(0L);
System.out.println(d1);//Thu Jan 01 08:00:00 CST 1970
Date d2=new Date(15663333325585555L);
System.out.println(d2);//Mon Apr 11 11:46:25 CST 498321
}
/*
Date类的成员方法
long getTime()把日期转为毫秒(相当于(System.currentTimeMillis())
返回自1970年1月1日00:00:00GMT以来此Date对象表示的毫秒数
*/
private static void demo03() {
Date d3=new Date();
long time=d3.getTime();
System.out.println(time);//1572770326687
}
}
三、DateFormat类
java.text.DateFormat类是日期/时间格式化子类的抽象类,可以通过这个类完成日期和文本的转换
日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date
对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。
java.text.DateFormat:是日期/时间格式化子类的抽象类
作用:
格式化(也就是日期 -> 文本)、解析(文本-> 日期)
成员方法:
String format(Date date) 按照指定的模式把Date日期格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串解析为Date日期
DateFormat是一个抽象类,无法直接创建对象使用,可以使用DateFormat子类
java.text.SimpleDateFormat extends DateFormat
构造方法:
SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
参数:
String pattern:传递指定的模式
模式:区分大小写
常用的格式规则:
标识字母(区分大小写) | 含义 |
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
四、DateFormat类的format方法和parse方法
使用DateFormat类中的方法format,把日期格式化为文本
String format(Date date) 按照指定的模式把Date日期格式化为符合模式的字符串
使用步骤:
1、创建SimpleDateFormat对象,构造方法中传递指定的模式
2、调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串
使用DateFormat类中的方法parse,把文本解析为日期
Date parse(String source) 把符合模式的字符串解析为Date日期
使用步骤:
1、创建SimpleDateFormat对象,构造方法中传递指定的模式
2、调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串解析为Date日期
【注意】
parse方法声明了一个异常叫ParseException解析异常
如果字符串和构造方法中的模式不一样,那么程序就会抛出此异常
调用一个抛出了异常的方法,就必须处理这个异常,要吗throws继续声明抛出这个异常,要么try...catch自己处理这个异常(后面会学)
package Day12_Demo02;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
java.text.DateFormat:是日期/时间格式化子类的抽象类
作用:
格式化(也就是日期 -> 文本)、解析(文本-> 日期)
成员方法:
String format(Date date) 按照指定的模式把Date日期格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串解析为Date日期
DateFormat是一个抽象类,无法直接创建对象使用,可以使用DateFormat子类
java.text.SimpleDateFormat extends DateFormat
构造方法:
SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
参数:
String pattern:传递指定的模式
模式:区分大小写
写对应的模式会把模式替换为对应的日期和时间
"yyyy-MM-dd HH:mm:ss"
"yyyy年MM月dd日 HH时mm分ss秒"
【注意】
模式中字母不能变,连接符号能变
*/
public class Demo03DateFormat {
public static void main(String[] args) throws ParseException {
demo01();
demo02();
}
/*
使用DateFormat类中的方法format,把日期格式化为文本
String format(Date date) 按照指定的模式把Date日期格式化为符合模式的字符串
使用步骤:
1、创建SimpleDateFormat对象,构造方法中传递指定的模式
2、调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串
*/
private static void demo01() {
//1、创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//2、调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串
Date date=new Date();
String text=sdf.format(date);
System.out.println(date);//Sun Nov 03 20:01:37 CST 2019
System.out.println(text);//2019-11-03 20:01:37
}
/*
使用DateFormat类中的方法parse,把文本解析为日期
Date parse(String source) 把符合模式的字符串解析为Date日期
使用步骤:
1、创建SimpleDateFormat对象,构造方法中传递指定的模式
2、调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串解析为Date日期
【注意】
parse方法声明了一个异常叫ParseException解析异常
如果字符串和构造方法中的模式不一样,那么程序就会抛出此异常
调用一个抛出了异常的方法,就必须处理这个异常,要吗throws继续声明抛出这个异常,要么try...catch自己处理这个异常(后面会学)
*/
private static void demo02() throws ParseException {
//1、创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//2、调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串解析为Date日期
Date date=sdf.parse("2019-11-03 20:01:37");
System.out.println(date);//Sun Nov 03 20:01:37 CST 2019
}
}