关于Calendar日历类的基本使用

关于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];
    }
}

猜你喜欢

转载自blog.csdn.net/pipizhen_/article/details/107633739
今日推荐