Date
java.util.Date 表示特定的瞬间,精确到毫秒。l例如1970-01-01 00:00:00 到现在的毫秒数。
构造方法:
Date()
:无参构造,表示当前时间。Date(long date)
:传递毫秒值,转化为Date日期。
常用方法:
boolean equals(Object date)
:用此方法的Date对象和指定日期相等时候返回true,否则返回false。long getTime( )
:返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。String toString( )
:把此 Date 对象转换为String。
示例:
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
// 获取当前时间
Date t1 = new Date();
System.out.println(t1);
Date t2 = new Date(0L);
System.out.println(t2);
Date t3 = new Date(1136213819569L);
System.out.println(t3);
System.out.println(t1.equals(t2));
System.out.println(t3.getTime()); // 1136213819569
System.out.println(t1.toString()); // Tue Jul 19 23:38:49 CST 2022
}
}
DateFormat
DateFormat是一个抽象类,用于日期格式转化,在日期和文本之间相互转换。
String format(Date date)
:把日期转为字符串Date parse(String source)
:把字符串转为日期
SimpleDateFormat
是DateFormat
的子类,也有上述两个方法,但是注意parse会抛出异常,必须处理,后面还会详细说异常。
构造方法:SimpleDateFormat(String pattern)
:用给定的模式和默认的语言环境日期格式构造。其中pattern模式有以下注意几类。
- y 年
- M 月
- d 日
- H 时
- m 分
- s 秒
示例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatTest {
public static void main(String[] args) throws ParseException {
// 定义格式化器
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(); // 当前日期
System.out.println(date); // Sun Dec 26 11:29:05 CST 2021
// 日期转为固定格式的字符串
String dateText = dateFormat.format(date);
System.out.println(dateText); // 2021-12-26 11:29:05
// 固定格式的字符串转为日期
Date date2 = dateFormat.parse(dateText);
System.out.println(date2); // Sun Dec 26 11:31:25 CST 2021
}
}
Calendar
java.util.Calendar
日历类,是一个抽象类。
在Date后出现,替换了很多Date的方法。里面封装了很多静态属性和静态方法,有很多操作日历的方法。
Calendar是抽象类不能实例化,使用的时候通过getInstance来获取子类使用。
常用成员方法:
public int get(int field)
:返回日历给定字段的值public void set(int field, int value)
:将给定字段设定成指定值public abstract void add(int field, int amount)
:根据一定规则,把日历的指定的字段减去或加上时间量public Date getTime()
:返回一个表示Calendar时间值得Date对象。
说明:Calendar类静态属性字段可以用int的值表示,如下,
YEAR = 1; MONTH = 2; DATE = 5; HOUR = 10; MINUTE = 12; SECOND = 13。
Calendar类对象字段类型:
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
示例:
package base15_time.calendar;
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) {
// getInstance来获取Calendar的子类
Calendar calendar = Calendar.getInstance(); // 多态
// 获取年月日等
int year = calendar.get(Calendar.YEAR);
System.out.println(year); // 2021
int month = calendar.get(Calendar.MONTH);
System.out.println(month); // 11,比中国的月份少1,实际中国是12月
int date = calendar.get(Calendar.DATE);
System.out.println(date); // 26
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 26
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 1,这里的1实际是星期日,0-6表示星期六到星期一
// 设置年月日
System.out.println("================");
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, 40);
System.out.println(calendar.get(Calendar.YEAR)); // 2022
System.out.println(calendar.get(Calendar.MONTH)); // 0
System.out.println(calendar.get(Calendar.DATE)); // 1
calendar.set(2022, 0, 1); // 一次性设置多个
// 增加减少指定时间范围
System.out.println("=================");
calendar.add(Calendar.YEAR, -2); // 减2年
calendar.add(Calendar.MONTH, 3); // 加3个月
calendar.add(Calendar.DATE, 20); // 加20天
System.out.println(calendar.get(Calendar.YEAR)); // 2020
System.out.println(calendar.get(Calendar.MONTH)); // 3
System.out.println(calendar.get(Calendar.DATE)); // 21
// 把日历类转化为日期
System.out.println("=================");
Date date2 = calendar.getTime();
System.out.println(date2); // Tue Apr 21 13:53:02 CST 2020
}
}