SimpleDateFormat和Calendar类

5.SimpleDateFormat类

简单的一些运用

public class Common05 {
    //SimpleDateFormat类
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println("当前时间为:"+sdf.format(date));
        //c的使用
        System.out.printf("全部日期和时间信息:%tc%n",date);
        //f的使用
        System.out.printf("年-月-日格式:%tF%n",date);
        //d的使用
        System.out.printf("月/日/年格式:%tD%n",date);
        //r的使用
        System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
        //t的使用
        System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
        //R的使用
        System.out.printf("HH:MM格式(24时制):%tR",date);

        /*运行结果
        当前时间为:2022-07-06 10:35:12
        全部日期和时间信息:星期三 七月 06 10:35:12 CST 2022
        年-月-日格式:2022-07-06
        月/日/年格式:07/06/22
        HH:MM:SS PM格式(12时制):10:35:12 上午
        HH:MM:SS格式(24时制):10:35:12
        HH:MM格式(24时制):10:35
         */
    }
}

6.Calendar类

有啥作用?

答:但是我们如何才能设置和获取日期数据的特定部分 呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。Date中有很多方法都已经废弃了! Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。 Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明 的,只需要使用getInstance方法创建即可。

1.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 星期几

2.代码演示

public class Common06 {
    //Calendar类
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();//默认是当前日期
        System.out.println(c);
        //java.util.GregorianCalendar[time=1657076598720,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=6,WEEK_OF_YEAR=28,WEEK_OF_MONTH=2,DAY_OF_MONTH=6,DAY_OF_YEAR=187,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=3,SECOND=18,MILLISECOND=720,ZONE_OFFSET=28800000,DST_OFFSET=0]
        //创建一个代表2019年4月27日的Calendar对象
        Calendar c1 = Calendar.getInstance();
        c1.set(2019, 3 - 1, 27);
        // 获得年份
        int year = c1.get(Calendar.YEAR);
        // 获得月份
        int month = c1.get(Calendar.MONTH) + 1;
        // 获得日期
        int date = c1.get(Calendar.DATE);
        // 获得小时
        int hour = c1.get(Calendar.HOUR_OF_DAY);
        // 获得分钟
        int minute = c1.get(Calendar.MINUTE);
        // 获得秒
        int second = c1.get(Calendar.SECOND);
        // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
        int day = c1.get(Calendar.DAY_OF_WEEK);

        c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
        c1.set(Calendar.DATE,10);
        c1.set(Calendar.YEAR,2008);
        //其他字段属性set的意义以此类推

        //把c1对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算
        c1.add(Calendar.DATE, 10);
        //把c1对象的日期减去10,也就是c1也就表示为10天前的日期,其它所有的数值会被重新计算
        c1.add(Calendar.DATE, -10);


        String months[] = {
                "Jan", "Feb", "Mar", "Apr",
                "May", "Jun", "Jul", "Aug",
                "Sep", "Oct", "Nov", "Dec"};
        int year1;
        // 初始化 Gregorian 日历
        // 使用当前时间和日期
        // 默认为本地时间和时区
        GregorianCalendar gcalendar = new GregorianCalendar();
        // 显示当前时间和日期的信息
        System.out.print("Date: ");
        System.out.print(months[gcalendar.get(Calendar.MONTH)]);
        System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
        System.out.println(year1 = gcalendar.get(Calendar.YEAR));
        System.out.print("Time: ");
        System.out.print(gcalendar.get(Calendar.HOUR) + ":");
        System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
        System.out.println(gcalendar.get(Calendar.SECOND));
        // 测试当前年份是否为闰年
        if(gcalendar.isLeapYear(year1)) {
            System.out.println("当前年份是闰年");
        }
        else {
            System.out.println("当前年份不是闰年");
        }

        //Date: Jul 6 2022
        //Time: 4:24:11
        //当前年份不是闰年

    }
}
posted @ 2022-07-06 17:02  风雨2  阅读(34)  评论(0)    收藏  举报