关于Calendar的基本使用:
Calendar是一个抽象类,直接继承Object。
Calendar只有一个子类:GregorianCalendar。格里高里历,就是我们常说的:公历。
但一般不会使用这个子类new对象,那怎么办,抽象类不是不能new对象吗?
确实如此,但是Calendar有一个静态方法getInstance(),底层返回的其实就是子类对象。
Calendar c = Calendar.getInstance();
我们通过API帮助文档,或者直接查看源码,发现Calendar类中属性几乎全是static final int类型的字段常量。
Calendar中如何获取年月日,时分秒,及星期呢?
注意:月份编号是从0-11,星期编号是从星期天(1)- 星期六(7)
测试代码:
package calendartest;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test01 {
public static void main(String[] args) {
// 先使用Date对象,获取今天的日期,以便和Calendar对象对比
Date nowTime = new Date();
// 创建Calendar对象,获取当前系统的日历时间
Calendar c = Calendar.getInstance(); // 底层是多态:父类型的引用指向子类型对象
//System.out.println(c); // 输出的信息乱七八糟的,一大堆,应该拿出我们想要的信息
// 通过Calendar.YEAR,获取年
int year = c.get(Calendar.YEAR);
System.out.println(year); // 2020
// 通过Calendar.MONTH,获取月
int month = c.get(Calendar.MONTH);
System.out.println(month); // 6,月份编号是从0-11,则6代表7月份
// 通过DAY_OF_MONTH,获取一个月中的第几天
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day); // 28
// 通过DAY_OF_WEEK,获取星期
int weekday = c.get(Calendar.DAY_OF_WEEK);
System.out.println(weekday); // 3,从星期天开始计算的,星期天是1,星期一是2,星期六是7
// 通过HOUR,获取小时
int hour = c.get(Calendar.HOUR);
int hour1 = c.get(Calendar.HOUR_OF_DAY);
System.out.println(hour); // 10
System.out.println(hour1); // 10
// 通过MINUTE,获取分
int minute = c.get(Calendar.MINUTE);
System.out.println(minute); // 59
// 通过SECOND,获取秒
int second = c.get(Calendar.SECOND);
System.out.println(second); // 36
// 通过MILLISECOND,获取毫秒
int ms = c.get(Calendar.MILLISECOND);
System.out.println(ms); // 112
// 将Date对象格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTimeString = sdf.format(nowTime);
System.out.println(nowTime); // Tue Jul 28 10:59:35 CST 2020
System.out.println(nowTimeString); // 2020-07-28 10:59:35
System.out.println(year + "-" + (month+1) + "-" + day + " " + hour + ":" + minute + ":" + second + " " + getWeekday(weekday));
// 2020-7-28 10:59:36 星期二
}
// 获取星期几
private static String getWeekday(int day) {
String[] arr = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
// 0 1 2 3 4 5 6 7
return arr[day];
}
}