目录:
1.Date类( 日期类 )
1.1 Date类的 构造方法
public Date( )
public Date( ) : 无参构造方法,创建Date对象。
输出的Date对象是系统当前的日期和时间。
//创建Date对象 Date nowTime = new Date(); //输出系统当前的“日期和时间” //Date类中的toString()方法被重写了,所以此处输出的不是一个内存地址,应是一个日期字符串。 System.out.println(nowTime); //Thu Sep 14 14:36:24 CST 2023
public Date( long date )
public Date( long date ) : 有参构造方法,通过 “指定的毫秒数” 来创建Date对象。
//有参构造方法,通过“指定的毫秒数”创建Date对象 /* 这个时间是: 1970-01-01 00:00:00 001 (格林尼治时间), 通过下面的时间格式转换,可以验证 */ Date date = new Date(1); //注意: 参数 1 是一个毫秒数 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); String format = sdf.format(date); System.out.println(format); //1970-01-01 08:00:00 001 (北京时间)
2.SimpleDateFormat类 (简单日期格式类)
2.1 SimpleDateFormat类 的定义
- SimpleDateFormat (简单日期格式类) : 在Java.text包下的,专门 负责日期格式化。
2.2 SimpleDateFormat的 构造方法
SimpleDateFormat( )
- SimpleDateFormat( ) : 无参构造方法,创建出SimpleDateFormat对象。
//SimpleDateFormat 在Java.text包下的,专门负责日期格式化。 SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat( String pattern )
SimpleDateFormat( String pattern ) : 有参构造方法,用 给定的模式 和 默认语言环境的 日期格式符号 构造SimpleDateFormat对象
该构造方法中的 参数 : 日期格式符号。 即参数中传入的内容为 : 日期格式符号,以此来创建“简单日期格式”对象
SimpleDateFormat 可结合 .format(Date date) 方法能得到指定格式的“日期信息”。
format( ) 方法是SimpleDateFormat的父类 : DateFormat的方法。//创建Date对象 Date nowTime = new Date(); /* 日期格式符号: yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒 SSS 毫秒 完整表示年月日时间秒的日期格式符号 : yyyy-MM-dd HH:mm:ss:SSS */ //该构造方法中的参数为“日期格式符号”,以指定的日期格式来创建简单日期格式对象 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); SimpleDateFormat sdf3 = new SimpleDateFormat("dd/MM/yyyy"); SimpleDateFormat sdf4 = new SimpleDateFormat("yy/MM/dd HH:mm:ss"); // 调用.format()方法 输出指定格式的"时间信息" String format2 = sdf2.format(nowTime); String format3 = sdf3.format(nowTime); String format4 = sdf4.format(nowTime); System.out.println(format2); //2023-09-13 20:24:48:243 System.out.println(format3); //13/09/2023 System.out.println(format4); //23/09/13 20:24:48
日期格式符号
日期格式符号 中最常用的是:
yyyy 年
MM 月
dd 日
HH 时
mm 分
ss 秒
SSS 毫秒 (最高三位,最高999,1000毫秒代表1秒)完整表示年月日时间秒的日期格式符号 : yyyy-MM-dd HH:mm:ss:SSS
字母 日期或时间元素 表示 示例 G
Era 标志符 Text AD
y
年 Year 1996
;96
M
年中的月份 Month July
;Jul
;07
w
年中的周数 Number 27
W
月份中的周数 Number 2
D
年中的天数 Number 189
d
月份中的天数 Number 10
F
月份中的星期 Number 2
E
星期中的天数 Text Tuesday
;Tue
a
Am/pm 标记 Text PM
H
一天中的小时数(0-23) Number 0
k
一天中的小时数(1-24) Number 24
K
am/pm 中的小时数(0-11) Number 0
h
am/pm 中的小时数(1-12) Number 12
m
小时中的分钟数 Number 30
s
分钟中的秒数 Number 55
S
毫秒数 Number 978
z
时区 General time zone Pacific Standard Time
;PST
;GMT-08:00
Z
时区 RFC 822 time zone -0800
3.将“Date类型”转换为“日期字符串String”
第一步:创建 SimpleDateFormat ( 日期格式符号 ) 对象。
第二步:调用SimpleDateFormat父类:DateFormat 的方法 :format( Date date),来将Date转换为“日期字符串String” (指定格式的“日期信息”)。
注意点:
①new SimpleDateFormat( 日期格式符号 ) 中的参数为:日期格式符号。
②format( Date date )方法中的参数为:Date对象。
例子如:
//创建Date对象 Date date = new Date(); /* 日期格式符号: yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒 SSS 毫秒 完整表示年月日时间秒的日期格式符号 : yyyy-MM-dd HH:mm:ss:SSS */ //该构造方法中的参数为“日期格式符号”,以指定的日期格式来创建简单日期格式对象 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); SimpleDateFormat sdf3 = new SimpleDateFormat("dd/MM/yyyy"); SimpleDateFormat sdf4 = new SimpleDateFormat("yy/MM/dd HH:mm:ss"); // 调用.format()方法 输出指定格式的"时间信息" String format2 = sdf2.format(date); String format3 = sdf3.format(date); String format4 = sdf4.format(date); System.out.println(format2); //2023-09-13 20:24:48:243 System.out.println(format3); //13/09/2023 System.out.println(format4); //23/09/13 20:24:48
4.将“日期字符串String”转换为“Date类型”
第一步:创建 SimpleDateFormat ( 日期格式符号 ) 对象。
第二步:调用SimpleDateFormat父类:DateFormat 的方法 : parse( String pattern ),来将 “日期字符串String ”转换为 “Date类型”。
注意点:
①new SimpleDateFormat( 日期格式符号 ) 中的参数为:日期格式符号。但该“日期格式符号”不能随便写,要和 “日期字符串”格式相同,不然会出现异常。
②parse( String pattern)方法中的参数为:日期格式字符串String。
例子如:
//假设现在有一个日期字符串String,怎么转换为Date类型? String time = "2008-08-08 08:08:08 888"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS"); //调用parse()方法将"日期字符串String"转换为Date类型 Date date = sdf.parse(time); System.out.println(date); //Fri Aug 08 08:08:08 CST 2008
5.实际功能需求:
需求 : 怎么获取自1970年1月1日 00:00:00 000到“当前系统时间”的总毫秒数
//获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数。
//1秒 = 1000毫秒
long nowTimeMillis = System.currentTimeMillis();
System.out.println(nowTimeMillis); //1694666718586
需求:统计一个方法执行所耗费的时长
public class DateTest {
public static void main(String[] args) {
//统计一个方法执行所耗费的时长
//在调用目标方法之前记录一个毫秒数
long begin = System.currentTimeMillis();
print();
//在执行完目标方法之后记录一个毫秒数
long end = System.currentTimeMillis();
System.out.println("耗费的时长"+(end - begin)+"毫秒");
}
//统计一个方法执行所耗费的时长
private static void print() {
for (int i = 0; i < 1000; i++) {
System.out.println("i= " + i);
}
}
}
需求:获得"昨天"的此时的时间
//获得"昨天"的此时的时间
Date date = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String strTime = sdf.format(date);
System.out.println(strTime);
6.System类
System类的相关属性和方法:
System.out out是System类的静态变量。
System.out.println( ) : println方法不是System的,是PrintStream类的方法。
System.gc( ) :启动垃圾回收机制。
System.currentTimeMillis( ) : 获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数。
System.exit(0 ): 退出JVM。