Date类的两个构造函数:
Date()
分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)。
Date(long date)
分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
Date类当中很多方法都被DateFormat和Calendar所取代,因此以下为DateFormat和Calendar两个类的学习笔记。
DateFormat类是日期/时间格式化子类的抽象类,我们可以通过这个类帮我们完成Date对象和String对象之间的转换。分为格式化和解析两种转换方式。
常用规则为:y ----> 年,M ----> 月,d ----> 日,H ----> 时,m ----> 分,s ----> 秒
public static void main(String[] args) {
/*
格式化:将Date对象按照指定格式格式化为String对象
*/
Date date = new Date();
//创建日期格式化对象,并指定格式
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String str = df.format(date);//将Date对象格式化为字符串
System.out.println(str);//2018-08-04 13-22-32
}
public static void main(String[] args) throws ParseException {
/*
解析:将String对象按照指定格式解析为Date对象
*/
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String str = "2018-08-04 13-28-52";
Date date = df.parse(str);//将字符串解析为Date对象
//由于parse抛出编译时期异常ParseException,所以我们在主方法中需要throws ParseException。
System.out.println(date);//Sat Aug 04 13:28:52 CST 2018
}
Calendar类是日历类,替换了Date类当中的很多方法,把时间信息封装为静态成员变量,方便获取各个时间的属性值。利用Calendar.getInstance()方法获取默认时区和语言环境的一个日历。
YEAR ----> 年,MONTH ----> 月(月份为0-11,可以+1使用),DAY_OF_MONTH ----> 月中的天(几号),HOUR ----> 时(12小时制),HOUR_OF_DAY ----> 时(24小时制),MINUTE ----> 分,SECOND ----> 秒,DAY_OF_WEEK ----> 周中的天(周几,周日为1,可以-1使用)。
public static void main(String[] args) {
// 创建Calendar对象
Calendar cal = Calendar.getInstance();
//getTime()方法不是获取毫秒时刻,而是拿到对应的Date对象。
Date time = cal.getTime();
System.out.println(time);//Sat Aug 04 15:59:37 CST 2018
// 设置年
cal.set(Calendar.YEAR, 2018);
// 设置月 此处设置的月份为8月
cal.set(Calendar.MONTH, 7);
// 设置日
cal.set(Calendar.DAY_OF_MONTH, 4);
//使用add()可进行增减操作
//cal.add(Calendar.DAY_OF_MONTH,-2);//减两个月
//获取星期几
int i = cal.get(Calendar.DAY_OF_WEEK);
//星期是以星期日开头为1,因而得到的星期天数-1,即可得到星期值
System.out.println("今天是星期" + (i - 1));//今天是星期6
}