目录
一.Date 时间类
二.DateFormat 类和 SimpleDateFormat 类
三.Calendar 日历类
“时间如流水,一去不复返”,时间是一维的。所以,我们需要一把刻度尺来表达和度
量时间。在计算机世界,我们把 1970 年 1 月 1 日 00:00:00 定为基准时间,每个度量单
位是毫秒(1 秒的千分之一),如图所示。
我们用 long 类型的变量来表示时间,从基准时间前后几亿年都能表示。
这个“时刻数值”是所有时间类的核心值,年月日都是根据这个“数值”计算出来的。
我们工作学习涉及的时间相关类有如下这些:
一.Date 时间类
Date 时间类(java.util.Date)
在标准 Java 类库中包含一个 Date 类。它的对象表示一个特定的瞬间,精确到毫秒。
Date () 分配一个 Date 对象,并初始化此对象为系统当前的日期和时间,可以精 确到毫秒)。
Date (long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间以 来的毫秒数。
boolean equals ( Object obj) 比较两个日期的相等性。
long getTime () 返回毫秒数。
String toString () 把此 Date 对象转换为以下形式的 String:
dow mon dd hh:mm:ss zzz yyyy 其中:dow 是一周中的某一天 。
【示例】Date 类的使用
long nowNum = System.currentTimeMillis(); //当前时刻对应的毫秒数
Date d = new Date(); //当前时刻的对象
System.out.println(d.getTime()); //返回时间对应的毫秒数
Date d2 = new Date(1000L * 3600 * 24 * 365 * 150); //距离 1970年 150 年
System.out.println(d2);
输出:
1706772365614
Sun Nov 26 08:00:00 CST 2119
二.DateFormat 类和 SimpleDateFormat 类
DateFormat 类的作用
把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。
DateFormat 是一个抽象类,一般使用它的的子类 SimpleDateFormat 类来实现。
【示例】DateFormat 类和 SimpleDateFormat 类的使用
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Test {public static void main(String[ ] args) throws ParseException {// new 出 SimpleDateFormat 对象SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");SimpleDateFormat s2 = new SimpleDateFormat("yyyy-MM-dd");// 将时间对象转换成字符串String daytime = s1.format(new Date());System.out.println(daytime);System.out.println(s2.format(new Date()));System.out.println(new SimpleDateFormat("hh:mm:ss").format(new Date()));// 将符合指定格式的字符串转成成时间对象.字符串格式需要和指定格式一致。String time = "2049-10-1";Date date = s2.parse(time);System.out.println("date1: " + date);time = "2049-10-1 20:15:30";date = s1.parse(time);System.out.println("date2: " + date);}
}
输出:
2024-02-01 03:31:48
2024-02-01
03:31:48
date1: Fri Oct 01 00:00:00 CST 2049
date2: Fri Oct 01 20:15:30 CST 2049
代码中的格式化字符的具体含义见表:
时间格式字符也可以为我们提供其他的便利。比如:获得当前时间是今年的第几天。
三.Calendar 日历类
Calendar 类是一个抽象类,为我们提供了关于日期计算的功能,比如:年、月、日、时、
分、秒的展示和计算。
GregorianCalendar 是 Calendar 的子类,表示公历。
菜鸟雷区
注意月份的表示,一月是 0,二月是 1,以此类推,12 月是 11。 因为大多数人习惯于使用
单词而不是使用数字来表示月份,这样程序也许更易读,父类 Calendar 使用常量来表示月份:
JANUARY、FEBRUARY 等等。
【示例】GregorianCalendar 类和 Calendar 类的使用