Java 日期时间类
大约 3 分钟
Java 日期时间类
提示
本文记录学习 Java 日期时间的相关类,运行环境:jdk 1.8.0_212
时间戳(timestamp)概念
具体时间(特定的瞬间)距离历元(1970年01月01日 00:00:00:000) 经过的毫秒数,用long类型存储,计算机是使用时间戳存储表示时间
Date 类
Date 类 位于 Java.util 包中,直接继承于 Object,但是从 JDK 1.1 开始 Date类中关于 日期时间操作、格式化和解析字符串时间的 相应方法已经废除,我们应该使用 Calendar 类来实现日期和时间的转换操作等,使用 DateFormat 类来格式化和解析字符串
常用方法
- Date(): 构造方法
- getTime(): 获取时间戳
- after(): 测试此日期是否在指定日期之后
- before(): 测试此日期是否在指定日期之前
SimpleDateFormat 类
SimpleDateFormat 类 就是用于解析和格式化时间的类,所以该类主要包含这两个功能的方法:
- 格式化(format): Date类型的数据 根据相应的模板 格式化成 String 字符串
- 解析(parse): String 类型的时间转 根据相应的模板 解析成 Date类型
无论是格式化还是解析都需要设置日期时间的格式:
例子👇
yyyy-MM-dd 如 2020-12-12
HH:mm:ss 如 20:12:12
yyyy-MM-dd HH:mm:ss 如 2020-12-12 20:12:12
yyyy/MM/dd HH:mm:ss 如 2020/12/12 20:12:12
yyyy年MM月dd日 HH时mm分ss秒 如 2020年12月12日 20时12分12秒
代码如下👇
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateForMatExample {
public static void main(String[] args) throws ParseException {
// 定义 Date 时间
Date date = new Date();
// date to String
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = df.format(date);
System.out.println(dateStr);
// 输出:2021-04-19 17:17:56
// String to date
// 注:解析 parse 会抛出异常,需要捕获或者抛出
Date date1 = df.parse(dateStr);
System.out.println(date1);
// 输出:Mon Apr 19 17:17:56 CST 2021
}
}
Calendar 类
Calendar 类 也叫日历类,其内部封装了一个 long time 表示时间戳,其内部提供了方法通过对 time 计算出
年月日时分秒...等日历字段,这些字段都被存储到一个数组中,通过get(字段)可以去数组中提取对于字
段的值
Calendar 还提供了用来对日期做相加减,重新设置日期时间功能。
Calendar 本身是一个抽象类,通过 getInstance 方法获取对象,其底层创建的是Calendar的子类对
象。
常用方法
- Calendar.getInstance(): 用于快速构建一个 Calends 对象
- get(): 方法 获取 年月日 时分秒等
- set(): 方法 修改 年月日 时分秒等
- setTime(): 方法 将日历设置成想要的时间
- add(): 方法 对日期进行 增减操作
- getTime(): 返回 Date 实例对象
代码案例👇
// 通过 getInstance 方法,快速创建对象
Calendar cal = Calendar.getInstance();
// 年月日
cal.get(Calendar.YEAR);
cal.get(Calendar.MONTH)
cal.get(Calendar.DATE);
// 时分秒
cal.get(Calendar.HOUR); // 12 小时制
cal.get(Calendar.HOUR_OF_DAY); // 24 小时制
cal.get(Calendar.MINUTE);
cal.get(Calendar.SECOND);
// 增减时间
cal.add(Calendar.YEAR, 1);
// 使用 Calendar 设置时间
cal.setTime(targetDate);
// 设置时间
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
// 返回 Date 对象
Date date = cal.getTime();