目录
- 前言
- 1. 基本知识
- 2. 格式化输出
- 3. 格式转换
前言
记录这篇文章的缘由,主要是涉及一个格式转换,对此深挖了这个类
在Java中,Date类是用于表示日期和时间的类。
位于java.util包中,是Java平台中处理日期和时间的基本类之一。然而,需要注意的是,Date类存在一些问题:
其中之一是它不支持国际化,而且在Java 8及以后版本中,推荐使用java.time包中的新日期和时间API(如LocalDate、LocalTime、LocalDateTime等)来替代Date类。
1. 基本知识
一、 以下是Date类的一些基本概念和作用:
-
概念: Date类用于表示一个特定的时间点,精确到毫秒级别。
存储的是从1970年1月1日午夜开始的毫秒数,这被称为“Unix时间”或“Epoch时间”。 -
作用: Date类主要用于获取、表示和操作日期和时间。
用于记录事件发生的时间、计算时间间隔等。
二、常用的Date类API包括:
| 构造方法 | 获取时间 | 设置时间 | 时间比较 | 格式转换 |
|---|---|---|---|---|
然而,由于Date类的一些缺陷,建议在新的应用中使用
2. 格式化输出
一般Date格式化输出,会配合
主要的参数如下:
| 字母 | 含义 |
|---|---|
| y | 年 |
| M | 年中的月份 |
| w | 年中的周数 |
| W | 月份中的周数 |
| D | 年中的天数 |
| d | 月份中的天数 |
| F | 月份中的星期 |
| E | 星期中的天数 |
| a | Am/pm 标记 |
| H | 一天中的小时数(0-23) |
| k | 一天中的小时数(1-24) |
| K | am/pm 中的小时数(0-11) |
| h | am/pm 中的小时数(1-12) |
| m | 小时中的分钟数 |
| s | 分钟中的秒数 |
| S | 毫秒数 |
| z | 时区 |
例子如下:
import java.text.SimpleDateFormat;
import java.util.Date;
public class datetest {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sd=new SimpleDateFormat("现在时间: "+"yyyy 年 MM 月 dd 日 E HH 点 mm 分 ss 秒");
System.out.println(sd.format(now));
sd = new SimpleDateFormat("一年中的第 D 天,一个月中的第 F 个星期 ,一年中的第 w 个星期,一个月中的第 W 个星期");
System.out.println(sd.format(now));
}
}
截图如下:

特别注意到是12小时和24小时的规则不大一样:
import java.text.SimpleDateFormat;
import java.util.Date;
public class datetest {
public static void main(String[] args) {
Date now = new Date();
// yyyy-MM-dd hh:mm:ss 12小时
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); //小写是12小时
System.out.println(sdf.format(now));
// yyy-MM-dd HH:mm:ss 24小时
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//大写是24小时的
System.out.println(sdf.format(now));
}
}
截图如下:(由于时间点还没过下午,将就下~)

3. 格式转换
常用的转换主要是Date转换为String,或者String转换为时间格式!
一、Date转换为String:
public class datetest {
public static void main(String[] args) {
Date now = new Date();
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sd.format(now));
// 自定义格式
sd = new SimpleDateFormat("M-dd");
System.out.println(sd.format(now));
}
}
截图如下:

二、String转换为Date:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class datetest {
public static void main(String[] args) {
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
String now = "2024-01-21";
try {
// 转换为Date类型
Date date = sd.parse(now);
System.out.println(date);
// 输出long的格式
long time = date.getTime();
System.out.println(time);
// long格式之后转换为String来表示
System.out.println(sd.format(time));
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
截图如下:
