跳至主要內容

Java 日期时间类

Zenghr大约 3 分钟Java

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类型

无论是格式化还是解析都需要设置日期时间的格式:

mark
mark

例子👇

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秒 	如 20201212201212

代码如下👇

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();