类 Date
表示特定的瞬间,精确到毫秒。
有3种构造方法:
public Date( )表示分配它的时间(精确到毫秒)。
public Date(long date):创建一个日期对象,指定毫秒值 (需要将long 时间毫秒值转换成Date对象)
public void setTime(long time):设置毫秒值
我们可以通过一个段代码来深入了解它的功能
public static void main(String[] args) {
Date d = new Date() ;
System.out.println(d); //Date类型的日期格式:Sun Apr 29 11:22:47 CST 2018
//Date的文本格式: String :2018-4-29
Date dd = new Date(1000) ;
System.out.println(dd);
}//输出为Thu May 03 09:04:26 CST 2018
Thu Jan 01 08:00:01 CST 1970
public long getTime()
将Date格式转换成long的毫秒值格式
public static void main(String[] args) {
//创建日期类对象
Date d = new Date() ;
long time = d.getTime() ;
System.out.println(System.currentTimeMillis());//输出为1525309829693
重点:Date的日期格式和日期的文本格式String类型之间的转
Date---->String(格式化)
String-->Date(解析)
中间的转换:使用一个中间类:DateFormat,但是DateFormat是一个抽象类,抽象意味着不能实例化,所以应该考虑用它的子类:
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
SimpelDateFormat的构造方法:
public SimpleDateFormat(String pattern) :构造一个SimpleDateFormat对象,根据pattern(模式:规则)
SimpleDateFormat sdf = new SimpleDateFormat("xxx年xx月xx日") ;
日期和时间模式
年: yyyy
月: MM
日: dd
时: hh
分: mm
秒: ss
实际开发中:牵扯时间的东西,经常Date--String String--Date换
下面用一段代码详细介绍该功能
Date---->String转换
public static void main(String[] args) {
//创建一个Date对象
Date d = new Date();
//创建SimpleDateFormat类对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//public final String format(Date date):格式化
String str = sdf.format(d);
System.out.println("str"+str);//输出为str2018-05-03 09:57:49
String---->Date转换
public static void main(String[] args) throws ParseException {
String str = "2018-5-3";
//创建SimpleDateFormat类对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//注意 :simpleDateFormat在解析文本格式的时候,里面 模式(规则)一定要和文本格式的模式一直,
//否则就出现PareseException
Date d = sdf.parse(str);
System.out.println("d"+d);//输出为dThu May 03 00:00:00 CST 2018
学了这么多,我们可以做一个小练习巩固一下。
需求:键盘录入你的出生年月日,算一下你来到这个世界多少天?
分析:
1)创建键盘录入对象,录入一个数据出生年月日
2)1990-xx-xx
3)将文本格式的数据解析成日期对象
4)getTime() ; 获取出生所在日期的时间毫秒值
5)获取当前系统时间毫秒值
(6) 5)-4) = long time
(7)换算
public static void main(String[] args) throws ParseException {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//录入数据
System.out.println("请输入您的出生日期:");
String str = sc.nextLine();//yyyy-MM-dd
//创建SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
//获取出生年月所在的系统时间
long oldTime = date.getTime();
//再获取当前系统时间的毫秒值
long newTime = System.currentTimeMillis();
long time = newTime-oldTime;
long day = time/1000/60/60/24;
System.out.println("您来到这个世界已经"+day+"天");
}//in:1994-02-15//out:您来到这个世界已经8843天