Date类
java.util.Date
:表示日期和时间的类
类 Date 表示特定的瞬间,精确到毫秒。
毫秒:千分之一秒 1000毫秒=1秒
2088-08-08 09:55:33:333 瞬间
2088-08-08 09:55:33:334 瞬间
…
毫秒值的作用:可以对时间和日期进行计算
2099-01-03 到 2088-01-01 中间一共有多少天
可以把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期
把日期转换为毫秒
当前的日期:2088-01-01
时间原点(0毫秒的时间):1970 年 1 月 1 日 00:00:00(英国格林威治)
就是计算当前日期到时间原点之间一共经历了多少毫秒(1639553506741L)
注意:
中国属于东八区,会把时间增加8个小时
1970 年 1 月 1 日 08:00:00
把毫秒转换为日期
- 1 天 = 24 × 60 × 60 = 86400 秒。 = 86400 x 1000 = 86400 000 毫秒
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.tipdm.Demo02;
public class demo1Date { public static void main(String[] args) { System.out.println(System.currentTimeMillis());
} }
|
1 2 3
| 1686478732863
进程已结束,退出代码0
|
Date构造方法
- Date() 获取当前系统的日期和时间
- Date(long date):传递毫秒值,把毫秒值转换为Date日期
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.tipdm.Demo02;
import java.util.Date;
public class demo2Date { public static void main(String[] args) { demo01(); System.out.println("============="); demo02(); System.out.println("============="); }
private static void demo02() { Date date = new Date(0L); System.out.println(date);
date = new Date(1639553506741L); System.out.println(date); }
private static void demo01() { Date date = new Date(); System.out.println(date); } }
|
1 2 3 4 5 6
| Sun Jun 11 18:19:20 CST 2023 ============= Thu Jan 01 08:00:00 CST 1970 Wed Dec 15 15:31:46 CST 2021
进程已结束,退出代码0
|
long getTime() 把日期转换为毫秒值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| package com.tipdm.Demo02;
import java.util.Date;
public class demo2Date { public static void main(String[] args) { demo03();
}
private static void demo03() { Date date = new Date(); long time = date.getTime(); System.out.println(time); } }
|
1 2 3
| ============= 1686478760686 =============
|
java.text.DateFormat
是日期/时间格式化子类的抽象类
作用:
格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化
成员方法:
1 2 3 4 5
| String format(Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串,解析为Date日期
DateFormat 类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类
|
java.text.SimpleDateFormat extends DateFormat
构造方法:
1
| SimpleDateFormat(String pattern)
|
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
参数:
String pattern
: 传递指定的模式
模式:区分大小写
简写 |
意义 |
y |
年 |
M |
月 |
d |
日 |
H |
时 |
m |
分 |
s |
秒 |
写对应的模式,会把模式替换为对应的日期和时间
“yyyy-MM-dd HH:mm:ss” —> “2021-12-15 15:54:30”
注意:
模式中的字母不能更改,连接模式的符号可以改变
“yyyy年MM月dd日 HH时mm分ss秒” —> “2021年12月15日 15时54分30秒”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| package com.tipdm.Demo02;
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;
public class demo3DateFormat { public static void main(String[] args) throws ParseException { demo01(); }
private static void demo01() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 'at' HH时mm分ss秒"); Date date = new Date(); String d = sdf.format(date); System.out.println(d); } }
|
1 2 3
| 2023年06月11日 at 18时22分03秒
进程已结束,退出代码0
|
Date parse(String source)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| package com.tipdm.Demo02;
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;
public class demo3DateFormat { public static void main(String[] args) throws ParseException { demo02(); }
private static void demo02() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 'at' HH时mm分ss秒"); Date date = sdf.parse("2021年12月15日 at 16时01分18秒"); System.out.println(date); System.out.println(date.getTime());
} }
|
1 2 3 4
| Wed Dec 15 16:01:18 CST 2021 1639555278000
进程已结束,退出代码0
|
练习:请使用日期时间相关的API,计算出一个人已经出生了多少天。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| package com.tipdm.Demo02;
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;
public class demo4Test { public static void main(String[] args) throws ParseException { System.out.print("请输入出生日期(格式:yyyy-MM-dd)") Scanner sc = new Scanner(System.in); String Birthday = sc.next(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = sdf.parse(Birthday); long birthMS = date.getTime();
Date now = new Date(); long nowMS = now.getTime();
long deltaMS = nowMS - birthMS; int deltaDays = deltaMS / 86400000; System.out.println("距离您出生已经:" + deltaDays + "天了"); } }
|
1 2 3 4
| 请输入出生日期(格式:yyyy-MM-dd)1996-6-28 距离您出生已经:9844天了
进程已结束,退出代码0
|