public static void main(String[] args) {
//Data的空参数构造方法-Data()获取当前系统的时间(精确到毫秒的系统当前时间)
Date date = new Date();
//java.util.Date类的toString()方法已经被重写了
//所以直接输出对象,不是这个对象的内存地址,而是一个日期字符串
System.out.println(date); //输出:Sun Aug 28 21:18:47 CST 2022
}
有参构造
public static void main(String[] args) {
// Date类的带参数构造方法
//Date(long date) :传递毫秒值转换为Date日期
Date date = new Date(0L); //把参数里面的毫秒转成对应的日期
System.out.println(date); //输出:Thu Jan 01 08:00:00 CST 1970
Date date1 = new Date(1620543792746L); //把参数里面的毫秒转成对应的日期
System.out.println(date1); //输出:Sun May 09 15:03:12 CST 2021
}
成员方法getTime()
public static void main(String[] args) {
// Long getTime()把日期转换为毫秒值(相当于System.currentTimeMillis()方法)
// 返回自1970年 1月一日 00:00:00 到当前系统时间一共经历了多少毫秒
Date date = new Date();
long time = date.getTime();
System.out.println(time); //1661693372684
}
public static void main(String[] args) {
Long TimeMillis = System.currentTimeMillis();
System.out.println(TimeMillis); //输出:1661693849165
}
那么这个方法可以用来干什么呢?
看的出来,经过测试,下列代码空循环一亿次,用了3毫秒
public static void main(String[] args) {
//统计一个方法的耗时
//在调用目标方法之前记录一个毫秒数
Long TimeMillis = System.currentTimeMillis();
//这里调用方法
print();
//在执行完目标方法之后记录一个毫秒数
Long end = System.currentTimeMillis();
System.out.println("耗费时长:"+(end-TimeMillis)+"毫秒"); //输出:耗费时长:3毫秒
}
public static void print(){
for (int i = 0; i < 100000000; i++) {
}
}
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 Date parse(String source)把符合模式的字符串,解析为Date日期
使用这两个成员方法及其细节
public static void main(String[] args) throws ParseException {
demo01();
demo02(); //调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
}
private static void demo01() {
//使用DateFormat类中的format方法,把日期格式转化为文本
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式
//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式转换为符合模式的字符串(文本)
//String format(Date date) 按照指定模式,把Date日期,格式化为符合模式的字符串
Date date =new Date(); //获取当前系统时间
String format = sdf.format(date);
System.out.println(date); //Sun May 09 16:09:50 CST 2021
System.out.println(format); //2021年09月09日 16时09分50秒
}
/*
使用DateFormat类中的parse方法,把文本解析成为Date日期
1.创建SimpleDateFormat对象,构造方法中传递指定的模式
2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
注意:
public Date parse(String source)throws ParsejException
parse方法声明一个异常叫ParseException
如果字符串和构造方法的模式不一样,那么程序就会抛出异常
调用一个抛出异常的方法,就必须的处理这个异常
要么throws继续抛出这个异常,要么try catch自己处理
出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
这就是在我的方法声明这个异常,我不处理,我声明一下
程序没有问题,正常执行
出现问题,打印异常,并终止程序
*/
private static void demo02() throws ParseException {
//使用DateFormat类中的parse方法,把文本解析成为Date日期
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式
//Date parse(String source) 把符合,模式的字符串,解析为Date日期
//2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
/*
出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
这就是在我的方法声明这个异常,我不处理,我声明一下
*/
// 把字符串类型按照传入构造模式解析成为Date类型,传入指定模式和字符串要一样,字符串这边少个秒就报错
Date parse = sdf.parse("2021年09月09日 16时09分50秒");
System.out.println(parse);//Sat Jan 09 16:09:50 CST 2021
}
练习
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in); // 输入:2001-07-02
System.out.println("请输入出生日期(格式为yyyy-mm-dd):");
String next = scanner.next(); //拿到字符串出生日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
Date parse = simpleDateFormat.parse(next); //把字符串出生日期解析成为DAte格式
long ee = parse.getTime(); // 把Date格式的出生日期转换为毫秒值
Date aa = new Date(); //获取当前日期毫秒值
long hh = aa.getTime(); //把当前日期毫秒值转换成为毫秒值
// Date aa = new Date().getTime(); 一步到位 匿名
long dd = hh-ee; //差值
long jj = dd/1000/60/60/24; //把毫秒值转换成为天
System.out.println(jj); // 输出:7908。 代表着 2001-07-02 到今天已经过了7908天
// System.out.println(dd/1000/60/60/24); //一步到位
}
public static void main(String[] args) {
//Data的空参数构造方法-Data()获取当前系统的时间(精确到毫秒的系统当前时间)
Date date = new Date();
//java.util.Date类的toString()方法已经被重写了
//所以直接输出对象,不是这个对象的内存地址,而是一个日期字符串
System.out.println(date); //输出:Sun Aug 28 21:18:47 CST 2022
}
有参构造
public static void main(String[] args) {
// Date类的带参数构造方法
//Date(long date) :传递毫秒值转换为Date日期
Date date = new Date(0L); //把参数里面的毫秒转成对应的日期
System.out.println(date); //输出:Thu Jan 01 08:00:00 CST 1970
Date date1 = new Date(1620543792746L); //把参数里面的毫秒转成对应的日期
System.out.println(date1); //输出:Sun May 09 15:03:12 CST 2021
}
成员方法getTime()
public static void main(String[] args) {
// Long getTime()把日期转换为毫秒值(相当于System.currentTimeMillis()方法)
// 返回自1970年 1月一日 00:00:00 到当前系统时间一共经历了多少毫秒
Date date = new Date();
long time = date.getTime();
System.out.println(time); //1661693372684
}
public static void main(String[] args) {
Long TimeMillis = System.currentTimeMillis();
System.out.println(TimeMillis); //输出:1661693849165
}
那么这个方法可以用来干什么呢?
看的出来,经过测试,下列代码空循环一亿次,用了3毫秒
public static void main(String[] args) {
//统计一个方法的耗时
//在调用目标方法之前记录一个毫秒数
Long TimeMillis = System.currentTimeMillis();
//这里调用方法
print();
//在执行完目标方法之后记录一个毫秒数
Long end = System.currentTimeMillis();
System.out.println("耗费时长:"+(end-TimeMillis)+"毫秒"); //输出:耗费时长:3毫秒
}
public static void print(){
for (int i = 0; i < 100000000; i++) {
}
}
String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 Date parse(String source)把符合模式的字符串,解析为Date日期
使用这两个成员方法及其细节
public static void main(String[] args) throws ParseException {
demo01();
demo02(); //调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
}
private static void demo01() {
//使用DateFormat类中的format方法,把日期格式转化为文本
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式
//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式转换为符合模式的字符串(文本)
//String format(Date date) 按照指定模式,把Date日期,格式化为符合模式的字符串
Date date =new Date(); //获取当前系统时间
String format = sdf.format(date);
System.out.println(date); //Sun May 09 16:09:50 CST 2021
System.out.println(format); //2021年09月09日 16时09分50秒
}
/*
使用DateFormat类中的parse方法,把文本解析成为Date日期
1.创建SimpleDateFormat对象,构造方法中传递指定的模式
2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
注意:
public Date parse(String source)throws ParsejException
parse方法声明一个异常叫ParseException
如果字符串和构造方法的模式不一样,那么程序就会抛出异常
调用一个抛出异常的方法,就必须的处理这个异常
要么throws继续抛出这个异常,要么try catch自己处理
出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
这就是在我的方法声明这个异常,我不处理,我声明一下
程序没有问题,正常执行
出现问题,打印异常,并终止程序
*/
private static void demo02() throws ParseException {
//使用DateFormat类中的parse方法,把文本解析成为Date日期
//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式
//Date parse(String source) 把符合,模式的字符串,解析为Date日期
//2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
/*
出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
这就是在我的方法声明这个异常,我不处理,我声明一下
*/
// 把字符串类型按照传入构造模式解析成为Date类型,传入指定模式和字符串要一样,字符串这边少个秒就报错
Date parse = sdf.parse("2021年09月09日 16时09分50秒");
System.out.println(parse);//Sat Jan 09 16:09:50 CST 2021
}
练习
public static void main(String[] args) throws ParseException {
Scanner scanner = new Scanner(System.in); // 输入:2001-07-02
System.out.println("请输入出生日期(格式为yyyy-mm-dd):");
String next = scanner.next(); //拿到字符串出生日期
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
Date parse = simpleDateFormat.parse(next); //把字符串出生日期解析成为DAte格式
long ee = parse.getTime(); // 把Date格式的出生日期转换为毫秒值
Date aa = new Date(); //获取当前日期毫秒值
long hh = aa.getTime(); //把当前日期毫秒值转换成为毫秒值
// Date aa = new Date().getTime(); 一步到位 匿名
long dd = hh-ee; //差值
long jj = dd/1000/60/60/24; //把毫秒值转换成为天
System.out.println(jj); // 输出:7908。 代表着 2001-07-02 到今天已经过了7908天
// System.out.println(dd/1000/60/60/24); //一步到位
}