Java 中的Calendar类

由于Date类过于古老,许多的构造器和方法都已经过时。Java推荐使用Calendar类来完成时间计算等操作,Calendar类是一个抽象类,它无法被实例化,也就是说无法创建对象,而是通过调用静态方法getInstance()来获取一个日历。Calendar中还有很多与时间有关的常量(或者说字段、属性),例如年(Calendar.YEAR)、月(Calendar.MONTH)、日(Calendar.DAY_OF_MONTH)、时(Calendar.HOUR_OF_DAY)、分(Calendar.MINUTE)、秒(Calendar.SECOND)、星期(Calendar.DAY_OF_WEEK)等;其中小时(Calendar.HOUR_OF_DAY)是24小时制的,还有一个12小时制的(Calendar.HOUR),月份是按0~11算的,0代表1月,11代表12月,星期是星期天开始算起,算作一个星期的第一天,返回1,星期一返回2,……,星期六返回7。

下面说一下Calendar类的一些常用方法:

  1. getInstance():使用默认时区和语言环境获得一个日历。
  2. getTime():返回一个表示此 Calendar 时间值的 Date 对象。就是把日历转换成date对象。
  3. setTime():使用给定的 Date 设置此 Calendar 的时间。把date对象转换成日历。getTime()和setTime()可以用作Calendar类和Date 类之间的相互转换。

// getInstance():获取日历

Calendar  calendar  =  Calendar.getInstance();

// getTime():获取时间,可以把日历转换成date对象

Date  date  =  calendar.getTime() ;

System.out.println(date);

// setTime ():设置时间,可以把date对象转换成日历

Calendar. setTime(date);

System.out.println(Calendar.getTime());

 

输出结果如下:

  1. get(int field):返回给定日历字段的值。

// 月是从0开始算(0~11),所以需要+1

System.out.println("几月:" + (calendar .get(Calendar.MONTH) + 1) + "");

// 这个是24小时制,Calendar.HOUR12小时制

System.out.println("几点:" + calendar.get(Calendar.HOUR_OF_DAY) + "");

//星期是从礼拜天开始算的,算作一个星期中的第一天,返回1,礼拜一返回2

System.out.println("一周中的第几天:" +

(calendar.get(Calendar.DAY_OF_WEEK)) + "");

输出结果如下:

5、set(int field, int value):将给定的日历字段设置为给定值。该方法有多个重载,可一次性设置年月日或者年月日时分秒,也可单独设置具体的某个字段。

calendar.set(2018, 5, 6);//设置为2018-06-06,不指定的部分将使用现在的时间

    System.out.println(calendar.getTime());

       calendar.set(Calendar.MONTH, 4);//设置月份为5月,可以使用数字

    calendar.set(Calendar.MONTH, Calendar.MAY);// 也可以使用英文的单词

System.out.println(calendar.getTime());

输出结果如下:

6、add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。这个方法是正常算的,就是说它会更改更大的字段,比如5月3日减去4天就是4月29日,减去5个月就是去年年底,加法也一样。

calendar.add(Calendar.DATE, -4);// -4

    System.out.println(calendar.getTime());

7、roll(int field, int amount):向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。这个方法和add一样也是添加或减去指定字段的时间量的,不过这个方法不会影响到别的字段,它只在指定的字段上做更改,比如说同样是5月3日减去4天,它就会变成5月30日,而不是4月29日,它只更改指定的日期字段而不更改月份字段,对月份字段不会有影响,加法也一样。

calendar.roll(Calendar.DATE, -4); // -4

    System.out.println(calendar.getTime());

输出结果如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值