1、Date
Date类的对象在Java中代表的是当前所在系统的此刻日期时间。
Date的构造器:
public Date()
创建一个Date对象,代表的是系统当前此刻日期时间
Date的常用方法:
public long getTime()
获取时间对象的毫秒值
Date类记录时间的2种形式:
形式1:日期对象
//1、创建一个Date类的对象:代表系统此刻日期时间对象
Date d = new Date();
System.out.println(d);//Thu May 11 11:15:06 CST 2023
形式2:时间毫秒值
//2、获取时间毫秒值
long time = d.getTime();
System.out.println(time);//1683774906466
案例说明:计算出当前时间往后走3个小时21秒后的时间是多少。
时间毫秒值 -> 日期对象:
public Date(long time)
把时间毫秒值转换成Date日期对象。
public void setTime(long time)
设置日期对象的时间为当前时间毫秒值对应的时间
实例代码如下:
//1、得到当前时间
Date d1 = new Date();
System.out.println(d1);
//2、当前时间往后走3小时21秒
long time = System.currentTimeMillis();
time += (60 * 60 * 3 + 21) * 1000;
//3、把时间毫秒值转换成对应的日期对象
//方法一:
Date d2 = new Date();
System.out.println(d2);
//方法二:
Date d3 = new Date();
d3.setTime(time);
System.out.println(d3);
得到的结果为:
2、SimpleDateFormat
可以对Date对象或时间毫秒值格式化成我们喜欢的时间格式,也可以把字符串的时间解析成日期对象。
SimpleDateFormat的构造器:
public SimpleDateFormat()
构造一个SimpleDateFormat,使用默认格式。
public SimpleDateFormat(String pattern)
构造一个SimpleDateFormat,使用指定格式
SimpleDateFormat的格式化方法:
public final String format(Date date)
将日期格式化成日期/时间字符串
public final String format(Object time)
将时间毫秒值化成日期/时间字符串
代码示例如下:
//1、日期对象
Date d = new Date();
System.out.println(d);//Thu May 11 15:18:22 CST 2023
//2、格式化这个日期对象(指定最终格式化的形式)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");
//3、开始格式化日期对象成为喜欢的字符串形式
String rs = sdf.format(d);
System.out.println(rs);//2023年05月11日 15:18:22 周四 下午
//4、格式化时间毫秒值
//需求:请问121秒后的时间是多少
long time1 = System.currentTimeMillis() + 121 * 1000;
String rs2 = sdf.format(time1);
System.out.println(rs2);
SimpleDateFormat解析字符串时间成为日期对象
public Date parse(String source)
从给定字符串的开始解析文本以生成日期
案例需求:请计算出2023年05月11日11时11分11秒,往后走2天14小时49分06秒后的时间是多少
示例代码如下:
public static void main(String[] args) throws ParseException {
//1、把字符串时间拿到程序中来
String dateStr = "2023年05月11日 11:11:11";
//2、把字符串时间解析成日期对象:形式必须与被解析时间的形式完全一样,否则运行时解析报错!
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date d = sdf.parse(dateStr);
//3、往后走2天14小时49分06秒
long time = d.getTime() + (2L*24*60*60 + 14*60*60 + 49*60 + 6) * 1000;//2后面的L是转换成long型以免数据失真
//4、格式化这个时间毫秒值就是结果
System.out.println(sdf.format(time));//2023年05月14日 02:00:17
}
3、Calendar
Calendar代表了系统此刻日期对应的日历对象,是一个抽象类,不能直接创建对象。
Calendar常用方法:
public int get (int field)
取日期中某个字段信息
public void set (int field,int value)
修改日历的某个字段信息
public void add (int field,int amount)
为某个字段添加/减少指定的值
public final Date getTime ()
拿到此刻日期对象
public long getTimeInMillis ()
拿到此刻时间毫秒值