世界标准时间:原子钟
中国时间:原子钟+8小时
计算机的时间原点:1970年1月1日 00:00:00
1秒 = 1000毫秒
Date类:
精确到毫秒,属于util包下的,sql包下的是后面数据库时使用的
构造方法:
public Date() | 创建一个Date对象,表示默认时间 |
public Date(long date) | 创建一个Date对象,表示指定时间 |
Date d = new Date();-----空参
sout(d)-------打印出来的是 电脑当前时间
Date d = new Date( 0L );
sout(d)-------打印出来的是 原子钟 即:Thu Jun 01 08:00:00 CST 1970
成员方法:
public long getTime() | 获取对象毫秒值 |
public void setTime(long time) | 设置时间,传递毫秒值 |
System.currentTimeMillis()和getTime效果 一样,都是获取当前时间的毫秒值,但在计算时间时用System.currentTimeMillis()
setTime()的使用方式:
Date s = new Date();-----原本显示是电脑时间
s.setTime( 0 L );----设置为时间原点
sout(s)----得出时间原点
SimpleDateFormat:
可以对Date对象,进行格式化和解析
年 y
月 M
日 d
时 H
分 m
秒 s
2021-11-11 00:00:00 = yyyy-MM-dd HH:mm:ss
2021年11月11日 00:00:00 = yyyy年MM月dd日 HH:mm:ss
构造方法:
public SimpleDateFormat() | 构造一个SimpleDateFormat,使用默认模式?? |
public SimpleDateFormat(String s) | 构造一个SimpleDateFormat,使用指定模式 |
默认模式的用法是什么?
用的比较少
for (int i = 0; i <= 12; i++) { String s = "2021年"+i+"月"; SimpleDateFormat s1 = new SimpleDateFormat("yyyy年M月"); Date r = s1.parse(s); System.out.println(r); String format = s1.format(r); System.out.println(format); }
当i不在1-12月的范围内,它会循环,例如:i= 0 输出的是12月,i= 13输出的是1月,即每12个数为一个周期
但星期数 会随着月份的变化而变化,不知为何?
后期注意即可
成员方法:
public final String format(Date d) | 将时间日期转化成字符串 |
public Date parse(String s) | 从给定字符串的开始解析问题以生成日期 |
格式化:(Date → String)
public final String format(Date d)
解析:(String → Date)
public Date parse(String s)
注意:
1.没有时间,按00:00:00显示
2.默认时间格式:周 月 日 时 年
3.2022-12-1 输出格式为 2022-12-01
Date和SimpleDateFormat搭配使用:
Date d = new Date();
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String a = s.format(d);
sout(s)-----------将当前电脑时间以 "yyyy-MM-dd HH:mm:ss" 这个格式输出
String s1 = "2021年11月2日";
SimpleDateFormat s = new SimpleDateFormat("yyyy年MM月dd日");
Date d = s.parse(s1);
sout(d)------------将s1以默认格式输出 即:Mon Nov 01 00:00:00 CST 2021
秒杀活动:
开始时间:2022-11-11 0:0:0
结束时间:2022-11-11 0:10:0
a用户抢购时间:2022-11-11 0:03:10
b用户抢购时间:2022-11-11 0:12:0
将所有时间
从String 转成 Date 再调用 getTime()方法获取开始时间和结束时间的毫秒值
然后再判断a和b是否在毫秒值之内