首页 > 编程笔记 > Java笔记 阅读:31

Java Date类的用法(附带实例)

在实际开发中,经常会用到日期、时间,同时还需要对日期、时间进行处理,Java 提供了多个类来处理日期和时间,其中就包括本节要讲的 Date 类。

Date 类用来表示日期时间,位于 java.util 包中。

1) 创建Date对象

Date 类有很多构造方法,其中大部分都已经不推荐使用,下表列出了目前最常用的两种。

表:Date 类目前最常用的两种构造方法
方法 方法描述
Date() 创建一个 Date 对象,并且初始值为系统当前日期
Date(long date) 创建一个 Date 对象,参数为指定时间距标准基准时间的毫秒数

接下来,通过案例来演示 Date 类构造方法的使用:
import java.util.Date;

public class Demo {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
        long dateLong = System.currentTimeMillis();  // 获取当前时间距标准基准时间的毫秒数
        Date date2 = new Date(dateLong);
        System.out.println(date2);
    }
}
程序的运行结果如下:

Thu Apr 10 03:28:39 UTC 2025
Thu Apr 10 03:28:39 UTC 2025

程序中,两种方式都是创建了一个 Date 对象,其中第 5 行是使用无参构造方法创建 Date 对象,表示系统当前时间;第 8 行使用有参构造方法创建 Date 对象,dateLong 是系统当前时间距离标准基准时间的毫秒数,该方法的本质就是将这个数值转换成 Date 日期时间格式。

System.currentTimeMillis() 方法可用来获取系统当前时间距离标准基准时间(1970-01-01 00:00:00)的毫秒数。

Java Date类的常用方法

在实际开发中,使用日期的地方一般都会涉及日期的操作,如日期的对比、获取年、获取月等。Date 类提供了很多相关的方法,其中大部分已经被其他日期类及其相关方法所取代,目前还比较常用的方法如下表所示。

表:Date类目前最常用的方法
方法 方法描述
boolean after(Date when) 判断当前日期对象是否在指定日期 when 之后
boolean before(Date when) 判断当前日期对象是否在指定日期 when 之前
long getTime() 获取自 1970-01-01 00:00:00 到当前日期对象的毫秒数
void setTime(long time) 设置当前 Date 对象的日期值,参数为毫秒数

接下来,通过案例来演示 Date 类的常用方法:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {
    public static void main(String[] args) {
        String birth1 = "1990-01-01";
        String birth2 = "1990-02-01";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date birthDate1 = format.parse(birth1);  // 字符串birth1转换成日期
            Date birthDate2 = format.parse(birth2);  // 字符串birth2转换成日期
            boolean after = birthDate1.after(birthDate2);
            boolean before = birthDate1.before(birthDate2);
            // 1月1日在2月1日前面,因此为false
            System.out.println("1.1 after 2.1比较结果为:" + after);
            // 1月1日在2月1日前边,因此为true
            System.out.println("1.1 before 2.1比较结果为:" + before);
            System.out.println("获取所经历的毫秒值:" + birthDate1.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}
程序的运行结果如下:

标准输出:1.1 after 2.1比较结果为:false
1.1 before 2.1比较结果为:true
获取所经历的毫秒值:631152000000

相关文章