目录
一、Date时间类
1、时间相关知识
全世界的时间,有一个统一的计算标准
格林威治/格林尼治时间(Greenwich Mean Time),简称GMT
计算核心:地球自转一天是24小时,太阳直射时为正午12点
格林尼治时间是以太阳经过格林尼治“本初子午线”的一刻为标准。但是,地球公转的速度略有差异,隔几年就得调一次时间。
2012年1月,国际通讯联盟会议上将决定是否取消用了将近130年的格林尼治标准时间。用原子钟替换。
原子钟是一种钟,它以原子共振频率标准来计算及保持时间的准确。原子钟是世界上已知最准确的时间测量和频率标准,也是国际时间和频率转换的基准,用来控制电视广播和全球定位系统卫星的讯号。
中国标准时间:
世界标准时间+8小时
时间单位换算
1秒 = 1000毫秒
1毫秒 = 1000微妙
1微妙 = 1000纳秒
2、什么是Date类
Java中的Date类是一个表示日期和时间的类,它存储了自1970年1月1日00:00:00 GMT以来的毫秒数。它提供了许多方法来操作和格式化日期和时间。
但是需要注意的是,Date类已经过时,不再推荐在新的代码中使用它。推荐使用java.time包中的类,比如LocalDate、LocalTime、LocalDateTime等。
3、Date类的使用
public Date() | 创建Date对象,表示当前时间 |
public Date(long date) | 创建Date对象,表示指定时间 |
public void setTime(long time) | 设置/修改毫秒值 |
public long getTime() | 获取时间对象的毫秒值 |
// 创建Date对象,表示当前时间
Date d = new Date();
System.out.println(d);
//创建Date对象,表示指定时间
Date d = new Date(0L);
System.out.println(d); // Thu Jan 01 08:00:00 CST 1970
// 设置/修改毫秒值
d.setTime(1000L);
System.out.println(d); // Thu Jan 01 08:00:01 CST 1970
// 获取时间对象的毫秒值
long time = d.getTime();
System.out.println(time); // 1000
二、SimpleDateFormat类
1、什么是SimpleDateFormat类
Java中的SimpleDateFormat类可以将日期对象格式化成指定模式的字符串,也可以将字符串解析成日期对象。
该类可以使用一些预定义的模式,例如“yyyy-MM-dd HH:mm:ss”,或者可以自定义模式。它还可以设置Locale以适应不同的语言环境。
y 年 , M 月 ,d 日 ,H 时 ,m 分 ,s 秒
2、SimpleDateFormat类的作用
- 格式化:把时间变成我们喜欢的格式。
- 2023-12-10
- 2023/12/10
- 2023年12月10日
- 解析:把字符串表示的时间变成Date对象
3、SimpleDateFormat类的使用
public SimpleDateFormat() | 构造一个SimpleDateFormat,使用默认格式 |
public SimpleDateFormat(String pattern) | 构造一个SimpleDateFormat,使用指定格式 |
public final String format(Date date) | 格式化(日期对象 -> 字符串) |
public Date parse(String source) | 解析(字符串 -> 日期对象) |
//构造一个SimpleDateFormat,使用默认格式
SimpleDateFormat sdf = new SimpleDateFormat();
String str = sdf.format(new Date());
System.out.println(str);
//构造一个SimpleDateFormat,使用指定格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
String str = sdf.format(new Date());
System.out.println(str);
// 解析(字符串 -> 日期对象)
// 创建对象的格式要跟字符串中的格式完全一致,否则会报错
String str = "2023-12-10";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
System.out.println(date);
三、Calender类
1、什么是Calender类
Java中的Calendar类是一个抽象类,提供了用于操作日期和时间的方法。它是Java日期和时间API的一部分,可以处理日历字段,例如年、月、日期、小时和分钟等。Calendar类还可以执行基本的时间算术运算,例如添加和减去日期和时间。
Calender是一个抽象类,不能直接创建对象,需要使用它的静态方法getInstance()来创建
2、Calender类的使用
public final Date getTime() | 获取日期对象 |
pulbic final setTime(Date date) | 给日历设置日期对象 |
public long getTimeInMillis() | 拿到时间毫秒值 |
public void setTimeInMillis(long millis) | 给日历设置时间毫秒值 |
public int get(int field) | 取日历中的某个字段信息 |
public void set(int field,int value) | 修改日历的某个字段信息 |
public void add(int field,int amount) | 为某个字段增加/减少指定的值 |
// 获取Calendar对象
// 底层原理:
// 会根据系统的不同时区来取不同的日历对象,默认表示当前时间。
// 把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中
// 细节:
// 月份:范围 0 ~ 11 如果获取出来的是 0 .那么实际上是 1 月。
// 星期:在老外的眼里,星期日是一周中的第一天
// 1(星期日) 2(星期一) 3 (星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
Calendar c = Calendar.getInstance();
System.out.println(c);
// 获取日期对象给
Date date = c.getTime();
System.out.println(date);
// 日历设置日期对象
Date d = new Date(0);
c.setTime(d);
System.out.println(c);
// 拿到时间毫秒值
long time = c.getTimeInMillis();
System.out.println(time);
// 给日历设置时间毫秒值
c.setTimeInMillis(1000L);
System.out.println(c);
// 取日历中的某个字段信息
//int year = c.get(1);
int year = c.get(Calendar.YEAR);
System.out.println(year);
// 修改日历的某个字段信息
c.set(Calendar.YEAR,2000);
System.out.println(c);
// 为某个字段增加/减少指定的值
// 正数增加,负数减少
c.add(Calendar.YEAR,10);
System.out.println(c);
c.add(Calendar.YEAR,-5);
System.out.println(c);