详解Java中的日期类
Java提供了许多用于处理日期和时间的内置类,其中包括日期类、时间类、日历类等。在这些类中,最基础和常用的是日期类java.util.Date
和日期格式化类java.text.SimpleDateFormat
。
java.util.Date类
java.util.Date
类表示了一个时间点,它存储了一个long类型的整数值,该值代表了从1970年1月1日00:00:00 UTC到该日期所经过的毫秒数。通过该类提供的方法,可以将该时间点表示的时间转换成UTC、本地时间、时间戳等不同形式,以及进行时间运算、比较、取整等操作。
创建Date对象
创建Date对象最常用的方法是调用无参构造函数Date()
,该方法返回一个代表当前时间的Date对象。除此之外,也可以通过传入long型时间戳参数的构造函数Date(long date)
创建指定时间的Date对象。
// 创建当前时间的Date对象
Date now = new Date();
// 创建指定时间的Date对象
Date time = new Date(1606128000000L); // 时间戳:2020-11-24 00:00:00
转换日期格式
一个Date对象实际上只是代表了一个时间点,它和日期格式是无关的。日期格式是指日期的展示方式,例如"yyyy-MM-dd HH:mm:ss"、"yyyy年MM月dd日"等。为了按照一定的格式展示Date对象代表的时间,我们需要使用日期格式化类SimpleDateFormat
。
// 创建SimpleDateFormat对象,指定输出日期的格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 将Date对象表示的时间转换成指定格式的字符串
String formattedTime = sdf.format(now);
System.out.println(formattedTime); // 2021-03-08 15:36:45
时间运算和比较
通过Date类提供的方法,我们可以对时间进行运算、比较等操作。
// 计算两个时间点之间相差的毫秒数
long diff = now.getTime() - time.getTime();
System.out.println("相差毫秒数:" + diff);
// 判断时间大小
System.out.println(now.after(time)); // true
System.out.println(now.before(time)); // false
日期格式化类SimpleDateFormat
SimpleDateFormat
类是用于日期格式化和解析的工具类,它提供了构造函数和方法来指定日期格式、解析字符串、格式化日期等相关功能。
初始化并使用SimpleDateFormat
SimpleDateFormat的构造函数有多种重载形式,可以指定不同的日期模板。通常使用的方法是,使用特定的日期模板初始化SimpleDateFormat对象,再使用该对象的parse
方法解析字符串,或使用format
方法将Date类型的日期格式化成字符串。
// 实例化SimpleDateFormat对象,指定日期格式
SimpleDateFormat fmt = new SimpleDateFormat("yyyy/MM/dd");
// 解析指定格式字符串为Date类型
Date date = fmt.parse("2021/03/08");
// 将Date类型日期格式化成指定格式的字符串
String str = fmt.format(date);
System.out.println(str); // 2021/03/08
日期模板
SimpleDateFormat支持的日期模板如下:
符号 | 含义 |
---|---|
yyyy | 完整的年份 |
MM | 月份,不足两位数时前面补0 |
M | 月份 |
dd | 日期,不足两位数时前面补0 |
d | 日期 |
HH | 小时,24小时制,不足两位数时前面补0 |
H | 小时,24小时制 |
hh | 小时,12小时制,不足两位数时前面补0 |
h | 小时,12小时制 |
mm | 分钟,不足两位数时前面补0 |
m | 分钟 |
ss | 秒,不足两位数时前面补0 |
s | 秒 |
日期计算
SimpleDateFormat也支持日期计算,例如加减年份、月份、日期等。
Date date = new SimpleDateFormat("yyyy/MM/dd").parse("2021/03/08");
// 计算加上一个月后的日期
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 1);
String str = new SimpleDateFormat("yyyy/MM/dd").format(cal.getTime());
System.out.println(str); // 2021/04/08
示例
示例一:计算距离现在一周后的日期
Date curDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(curDate);
cal.add(Calendar.WEEK_OF_YEAR, 1);
String formattedDate = new SimpleDateFormat("yyyy年M月d日").format(cal.getTime());
System.out.println("距离今天一周后的日期:" + formattedDate);
输出:
距离今天一周后的日期:2021年3月15日
示例二:解析字符串为Date类型
String str = "2021-03-08";
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(str);
System.out.println("解析字符串为Date类型:" + date);
输出:
解析字符串为Date类型:Mon Mar 08 00:00:00 CST 2021
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java中的日期类 - Python技术站