Date
表示特定的瞬间,精确到毫秒。
毫秒:千分之一秒,1000毫秒=1秒
毫秒值的作用:可以对时间和日期进行计算
例如:2099-01-03 到 2189-01-01 中间一共有多少天
可以把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期
将日期转换为毫秒
当前的时间:System.currentTimeMillis()
时间原点(0毫秒):1970年1月1日 00:00:00(英国格林威治)
就是计算当前日期到时间圆点之间一共经历了多少毫秒
public class DateDemo01 {
public static void main(String[] args) {
//获取当前系统时间到1970年1月1日 00:00:00经历了多少毫秒 1625380731781
System.out.println(System.currentTimeMillis());
}
}
将毫秒转换为日期
1天=24 * 60 * 60=86400秒=86400 * 1000=86400 000毫秒
注意:中国属于东八区,会把时间增加8个小时
1970年1月1日 08:00:00
Date的构造方法
Date类的空参数构造方法:
Date() 获取当前系统的日期和时间
import java.util.Date;
public class DateDemo02 {
public static void main(String[] args) {
demo01();
demo02();
demo03();
}
/*
* Date类的空参数构造方法:
Date() 获取当前系统的日期和时间
* */
public static void demo01() {
Date date = new Date();
System.out.println(date); //Sun Jul 04 14:47:33 CST 2021
}
/*
* Date类的带参构造方法:
* Date(Long date):传递毫秒值,把毫秒转换为Date日期*/
public static void demo02(){
Date d1=new Date(0L);
System.out.println(d1); //Thu Jan 01 08:00:00 CST 1970
Date d2=new Date(1567896543L);//后面别忘记加L
System.out.println(d2);//Mon Jan 19 11:31:36 CST 1970
}
/*
* Date的成员方法
* Long getTime() 把日期转换为毫秒(相当于System.currentTimeMillis())
* 就是计算当前日期到时间圆点之间一共经历了多少毫秒
* */
public static void demo03(){
Date dd=new Date();
long time = dd.getTime();
System.out.println(time);//1625381972728
}
}
注意:模式中的字母不能更改,连接模式的符号可以改变
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatDemo01 {
public static void main(String[] args) throws ParseException {
demo01();
demo02();
}
/*使用DateFormat类中的方法format,把日期格式化为文本
String format(Date date) 将日期格式化成日期/时间字符串
使用步骤:
1、创建SimpleDateFormat对象,构造方法中传递指定的格式
2、调用SimpleDateFormat中的format方法,按照构造方法中传递指定的格式,把Date日期格式化为符合模式的字符串
*/
public static void demo01(){
//1、创建SimpleDateFormat对象,构造方法中传递指定的格式
//SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //2021-07-04 15:32:34
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//2021年07月04日 15时34分03秒
//2、调用SimpleDateFormat中的format方法,按照构造方法中传递指定的格式,把Date日期格式化为符合模式的字符串
Date d1=new Date();
String text = sdf.format(d1);
System.out.println(text);
}
/*使用DateFormat类中的方法format,把文本解析为日期
Date parse(String text, ParsePosition pos) 从字符串中解析文本以产生一个 Date 。
使用步骤:
1、创建SimpleDateFormat对象,构造方法中传递指定的格式
2、调用SimpleDateFormat中的parse方法,按照构造方法中传递指定的格式,把Date日期格式化为符合模式的字符串
*/
public 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("2018年11月22日 12时22分45秒");
System.out.println(date); //Thu Nov 22 12:22:45 CST 2018
}
/*注意:public static void demo02() throws ParseException 抛出一个异常*/
/*如果你输入的字符串和你指定的模式不匹配会报错*/
}
案例:计算一个人出生了多少天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*计算一个人出生了多少天
* 思路:1、获取当前时间对应的毫秒值
* 2、获取自己生日日期对应的毫秒值
* 3、两个时间相减(当前时间-出生日期)*/
public class Demo03 {
public static void main(String[] args) throws ParseException {
//获取当前时间对应的毫秒值
long date=new Date().getTime();
//获取自己生日日期对应的毫秒值
Scanner sc=new Scanner(System.in);
System.out.println("请输入出生日期:yyyy-MM-dd");
String birth=sc.next();
//调用方法将字符串转换为日期
long time=demo1(birth);
//计算结果
long t=date-time;
//将结果转换为天数
t=t/1000/60/60/24;
System.out.println(t);
}
public static long demo1( String birth) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birth);
//将日期转为毫秒
long time = date.getTime();
return time;
}
}
构造方法
Date(); 根据当前系统时间创建日期对象
Date(long time); 根据传入的毫秒值时间创建日期对象
成员方法
long getTime(); 获取当前日期对象的亳秒值时间
DateFormat类&SimpleDateFormat类
构造方法
SimpleDateFormat(String s);根据指定模板创建 日期格式化对象
成员方法
String format(Date d);根据指定格式格式化日期对象
Date parse(String S);根据指定格式解析字符串
DateFormat类&SimpleDateFormat类
构造方法
SimpleDateFormat(String s);根据指定模板创建 日期格式化对象
成员方法
String format(Date d);根据指定格式格式化日期对象
Date parse(String S);根据指定格式解析字符串