Java中日期相关操作

本文深入讲解Java中的Calendar类,涵盖日期和时间的获取、设置、加减操作,以及日期比较和格式化的方法。同时,提供了Calendar与Date互相转换的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中有关时间的操作主要有Date和Calendar两个类,Date因为不便于实现国际化,从JDK1.1开始,推荐使用Calendar类进行时间和日期处理,基本上日常有关日期的处理Calendar都可以覆盖到,本篇文章主要讲解两方面内容:(1)结合日常日期的使用讲解Calendar (2)常见日期使用场景的补充

结合日常日期的使用讲解Calendar

  public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        /**
         * 获取年月日时分秒等
         */
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH); //比当前月份少1
        int date = cal.get(Calendar.DATE);
        int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);//date表示日期,day表示一个月的第几天,这两个值相等
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); //表示一周的第几天,从周日开始计算
        int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
        int hour = cal.get(Calendar.HOUR);//12小时制
        int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);//24小时制
        int minute = cal.get(Calendar.MINUTE);
        int second = cal.get(Calendar.SECOND);
        int millSecond = cal.get(Calendar.MILLISECOND);
        System.out.println("当前时间:" + cal.getTime());
        System.out.println("年份: " + year);
        System.out.println("月份: " + month);
        System.out.println("日期:" + date);
        System.out.println("当前月的第n天: " + dayOfMonth);
        System.out.println("当前周的第n天: " + dayOfWeek);
        System.out.println("当前年的第n天: " + dayOfYear);
        System.out.println("12小时制的时间: " + hour);
        System.out.println("24小时制的时间: " + hourOfDay);
        System.out.println("分钟: " + minute);
        System.out.println("秒: " + second);
        System.out.println("毫秒: " + millSecond);
        System.out.println("****************************************************");

        /**
         * 加减时间
         */
        System.out.println("当前时间: " + cal.getTime() );
        cal.add(Calendar.HOUR_OF_DAY, 10);//减就是add负数
        System.out.println("增加10个小时之后的时间: " + cal.getTime());
        System.out.println("****************************************************");

        /**
         * set()设置时间
         */
        cal.set(Calendar.MONTH, 10);
        System.out.println("设置MONTH为10的时候的日期,实际是11月份:" + cal.getTime());
        System.out.println("****************************************************");

        /**
         * getMaximum()和getActualMaxinum()
         */
        cal.set(Calendar.MONTH, 10);
        System.out.println("修改后的当前时间为: " + cal.getTime());
        int maximum = cal.getMaximum(Calendar.DAY_OF_MONTH);
        int actMax = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println("一个月中最大日期数: " + maximum);
        System.out.println("当前月中最大日期数: " + actMax);
        System.out.println("****************************************************");

        /**
         * 日期比较(见下面)
         */

        /**
         * 日期转换(见下面)
         */


    }

输出结果为:
在这里插入图片描述
注意的几个点:
(1)cal.get(Calendar.MONTH)返回的值比实际值少1, 并且, cal.set()设置月份的时候,设置的也要比实际值少1(比如设置11月份,这里是set了10)
(2)getMaximum()返回的是综合的最大值,getActualMaximum()返回的是当前值的最大值
(3)Calendar.HOUR_OF_DAY使用24进制。Calendar.HOUR使用12进制。

常见日期使用场景补充

(1)Calendar和Date互相转换

 Calendar calendar = Calendar.getInstance();
 //从Calendar对象中获取Date对象
 Date dateInstance = cal.getTime();
 //将Date对象反应到一个Calendar对象中
 calendar.setTime(dateInstance);

(2)日期的比较
其实这个功能实现由很多种方法,这里只介绍一种:通过转换成Date类,然后使用date.after()或者date.before()

cal.set(Calendar.DAY_OF_MONTH, 12);
Date date1 = cal.getTime();
cal.set(Calendar.DAY_OF_MONTH, 10);
Date date2 = cal.getTime();
System.out.println("date2: " + date2 + ";date1: "+ date1);
System.out.println("date2 > date1 :" + date2.after(date1));

(3)时间格式化

//日期parse to date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2019-09-19 23:18:45");
System.out.println(date);

//日期format to normal
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(new Date()));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值