Java Date日期类的用法(附带实例)
在 Java 中,当我们想要获取日期相关的信息时可以使用日期类(Date),该类提供了年月日时分秒的时间信息。通常我们可以使用 new Date() 方法来获取运行时的当前时间,时间精度达到毫秒级。
可以通过两种方式来创建 Date 对象,以下是两种构造方法:
下面的程序演示了这两种构造方法创建 Date 对象:
Date 类的常用方法如下表所示,主要用于时间前后的判断以及获取时间对应的毫秒值:
	
下面是一个简单的 Date 类的使用示例,运行程序后先获取当前时间,休眠三秒后继续获取当前时间,然后比较这两个时间的前后关系:
下面展示了如何把 Date 对象转换成指定格式的文本,通常我们需要在创建 SimpleDateFormat 对象时指定日期和时间的格式,然后调用 SimpleDateFormat 对象的 format() 方法进行转换。
反过来,如果想要通过指定格式的文本获取 Date 对象也可以通过 SimpleDateFormat 类来实现:
在创建 SimpleDateFormat 对象时需要指定格式,比如“yyyy”之类的,这些其实是 SimpleDateFormat 内置支持的格式编码,都是可以直接使用的,常用的格式编码如下表所示。
	
下面是这些格式编码的使用示例,大家可以根据输出去理解,也可以自己修改程序并查看输出结果。
	
	
可以通过两种方式来创建 Date 对象,以下是两种构造方法:
- Date():无参的构造方法,默认用当前日期和时间来初始化 Date 对象。
 - Date(long date):需要传入一个长整型参数,该参数表示从 1970 年 1 月 1 日 0 时 0 分 0 秒开始所经过的毫秒数。
 
下面的程序演示了这两种构造方法创建 Date 对象:
public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        Date date2 = new Date(1000000);
        System.out.println(date);
        System.out.println(date2);
    }
}
输出结果为:
	Mon Sep 12 23:41:47 CST 2022
	Thu Jan 01 08:16:40 CST 1970
Date 类的常用方法如下表所示,主要用于时间前后的判断以及获取时间对应的毫秒值:
| 方法名 | 描述 | 
|---|---|
| after(Date when) | 判断当前 Date 对象是否在指定日期之后 | 
| before(Date when) | 判断当前 Date 对象是否在指定日期之前 | 
| equals(Object obj) | 判断两个 Date 对象的时间是否相同 | 
| getTime() | 返回从 1970 年 1 月 1 日 0 时 0 分 0 秒开始所经过的毫秒数 | 
下面是一个简单的 Date 类的使用示例,运行程序后先获取当前时间,休眠三秒后继续获取当前时间,然后比较这两个时间的前后关系:
public class DateTest {
    public static void main(String[] args) throws InterruptedException {
        Date date = new Date();
        Thread.sleep(3000);
        Date date2 = new Date();
        System.out.println(date.after(date2));
        System.out.println(date.before(date2));
        System.out.println(date.getTime());
    }
}
输出结果为:
	false
	true
	1661177772753
下面展示了如何把 Date 对象转换成指定格式的文本,通常我们需要在创建 SimpleDateFormat 对象时指定日期和时间的格式,然后调用 SimpleDateFormat 对象的 format() 方法进行转换。
public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("现在是yyyy年MM月dd日 HH时mm分ss秒");
        String str = sdf.format(date);
        System.out.println(str);
    }
}
运行后输出“现在是2025年04月29日 08时25分35秒”。反过来,如果想要通过指定格式的文本获取 Date 对象也可以通过 SimpleDateFormat 类来实现:
public class DateTest {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
           date = sdf.parse("2022-08-23 10:30:30");
        } catch (ParseException e) {
           e.printStackTrace();
        }
        System.out.println(date);
    }
}
我们先指定格式并创建 SimpleDateFormat 对象,然后就可以调用其 parse() 方法将指定格式的文本解析成对应的 Date 对象。在创建 SimpleDateFormat 对象时需要指定格式,比如“yyyy”之类的,这些其实是 SimpleDateFormat 内置支持的格式编码,都是可以直接使用的,常用的格式编码如下表所示。
| 格式编码 | 描述 | 
|---|---|
| y | 表示年份 | 
| M | 表示月份 | 
| d | 表示天 | 
| H | 表示小时 | 
| m | 表示分 | 
| s | 表示秒 | 
| S | 表示毫秒 | 
| E | 表示星期几 | 
| D | 表示一年中的第几天 | 
| w | 表示一年中的第几周 | 
| W | 表示一个月内的第几周 | 
| a | 表示上午或下午 | 
| Z | 表示时区 | 
下面是这些格式编码的使用示例,大家可以根据输出去理解,也可以自己修改程序并查看输出结果。
import java.util.Date; // 导入Date类
import java.text.SimpleDateFormat; // 导入SimpleDateFormat类
public class DateTest {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年");
        System.out.println(sdf.format(date));
        sdf = new SimpleDateFormat("MM月dd日");
        System.out.println(sdf.format(date));
        sdf = new SimpleDateFormat("HH小时mm分钟ss秒SS毫秒");
        System.out.println(sdf.format(date));
        sdf = new SimpleDateFormat("现在是上午还是下午?a");
        System.out.println(sdf.format(date));
        sdf = new SimpleDateFormat("当前的时区是Z");
        System.out.println(sdf.format(date));
        sdf = new SimpleDateFormat("今天是周几?E");
        System.out.println(sdf.format(date));
        sdf = new SimpleDateFormat("今天是一年中的第D天,第w周");
        System.out.println(sdf.format(date));
    }
}
输出结果:
	2025年
	04月29日
	03小时20分钟52秒667毫秒
	现在是上午还是下午?AM
	当前的时区是+0000
	今天是周几?Tue
	今天是一年中的第119天,第18周
 ICP备案:
 公安联网备案: