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备案:
公安联网备案: