1.毫秒值的概念和作用
java.util.Date类表示特定的瞬间,精确到毫秒。
分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch) ”,即1970 年1月1日00:00:00 GMT)以来的指定毫秒数。
毫秒值的作用:可以对时间和日期进行计算
2099-01-03到2088-01-01 中间一共有多少天
可以日期转换为毫秒进行计算,计算完毕,在把毫秒转换为日期
把日期转换为毫秒:
当前的日期:2088-01-01
时间原点(0毫秒):1970年1月1日00:00:00
就是计算当前日期到时间原点之间一共经历了多少毫秒
注意:
中国属于东八区,会把时间增加8个小时
把毫秒转换为日期:
1天=24x60x60= 86400秒= 86400 X 1000 = 86400000毫秒
public class DataMain {
public static void main(String[] args) {
//获取当前系统时间到1970年1月1日00:00:00经历了多少毫秒
System.out.println(System.currentTimeMillis());
}
}
2.Data类的构造方法和成员方法
package cn.itcast.day11.demo01;
import java.util.Date;
public class DataMain {
public static void main(String[] args) {
demo01();
demo02();
demo03();
}
//Date类的空参数构造方法
//Date()获取当前系统的日期和时间
public static void demo01(){
Date date = new Date();
System.out.println(date);
}
//Date类的带参数构造方法
//Date(long date) :传递毫秒值,把毫秒值转换为Date日期
public static void demo02(){
Date date1 = new Date(0L);
System.out.println(date1);
}
//Long getTime() 把日期转换为毫秒值(相当于System. currentTimeMillis()方法)
//返回自1970 年1月1日00:00:00 GMT以来此Date对象表示的毫秒数。
public static void demo03(){
Date date = new Date();
System.out.println(date.getTime());
}
}
执行结果
Wed May 27 20:29:47 CST 2020
Thu Jan 01 08:00:00 CST 1970
1590582587584
3.DateFormat类
java. text . DateFormat是 日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的
转换,也就是可以在Date对象与String对象之间进行来回转换。
- 格式化:按照指定的格式,从Date对象转换为String对象。
- 解析:按照指定的格式,从String对象转换为Date对象。
java.text.DateFormat :是日期/时间格式化子类的抽象类
作用:
格式化(也就是日期->文本)、解析(文本->日期)
成员方法:
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串,解析为Date日期
DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类
java.text.simpleDateFormat extends DateFormat
构造方法:
SimpleDateFormat (String pattern)
用给定的模式和默认语言环境的日期格式符号构造Simpl eDateFormat。
参数:
String pattern:传递指定的模式
模式:区分大小写的
写对应的模式,会把模式替换为对应的日期和时间
“yyy-MM-dd HH:mm:ss
注意:
模式中的字母不能更改,连接模式的符号可以改变
"yyy年MM月dd日HH时mm分ss秒”
package cn.itcast.day11.demo01;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormateMain {
public static void main(String[] args) throws ParseException {
demo01();
demo02();
}
//使用DateFormat类中的方法format. ,把日期格式化为文本
//使用步骤:
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,
// 把Date日期格式化为符合模式的字符串(文本)
public static void demo01(){
SimpleDateFormat time = new SimpleDateFormat("yyy年MM月dd日HH时mm分ss秒");
Date date = new Date();
String r = time.format(date);
System.out.println(r);
System.out.println(date);
}
//使用DateFormat类中的方法parse,把文本解析为日期
//使用步骤:
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
//2.调用Simpl eDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
//注意:
//public Date parse(String source) throws ParseException
//parse方法声明了一个异常叫ParseException
//如果字符串和构造方法的模式不一样,那么程序就会抛出此异常
//调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续抛出这个异常,要么try catch自己处理
public static void demo02() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyy年MM月dd日HH时mm分ss秒");
Date date = sdf.parse("2018年05月21日 12时14分24秒");
System.out.println(date);
}
}
执行结果
2020年05月27日21时29分25秒
Wed May 27 21:29:25 CST 2020
Mon May 21 12:14:24 CST 2018
4.练习
请使用日期时间相关的API ,计算出一一个人已经出生了多少天。
思路:
- 获取当前时间对应的毫秒值
- 获取自己出生日期对应的毫秒值
- 两个时间相减(当前时间-出生日期)
1.使用Scanner类中的方法next ,获取出生日期
2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
3.把Date格式的出生日期转换为毫秒值
4.获取当前的日期,转换为毫秒值
5.使用当前日期的毫秒值-出生日期的毫秒值
6.把毫秒值的差值转换为天(s/1000/60/60/24)
package cn.itcast.day11.demo01;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//练习:
//请使用日期时间相关的API,计算出一个人已经出生了多少天。
//分析:
//1.使用Scanner类中的方法next ,获取出生日期
//2.使用DateFormat类中的方法parse,把字符串的出生日期解析为Date格式
//3.把Date格式的出生日期转换为毫秒值
//4.获取当前的日期,转换为毫秒值
//5.使用当前日期的毫秒值-出生日期的毫秒值
//6.把毫秒值的差值转换为天(s/1000/60/60/24)
public class datePractice {
public static void main(String[] args) throws ParseException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的出生日期,格式为yyyy-MM-dd");
String birthday = sc.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthdayDate = sdf.parse(birthday);
//把Date格式的出生日期转换为毫秒值
long birthdayDateTime = birthdayDate.getTime();
//获取当前的日期,转换为毫秒值
long todayTime = new Date().getTime();
//使用当前日期的毫秒值-出生日期的毫秒值
long time = todayTime - birthdayDateTime;
//把毫秒值的差值转换为天(s/1000/60/60/24)
System.out.println(time/1000/60/60/24);
}
}