java.util.calendar类相关API介绍

一、Calendar介绍

     Calendar类是一个日历抽象类,提供了一组对年月日时分秒星期等日期信息的操作的函数,并针对不同国家和地区的日历提供了相应的子类,即本地化。从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现(Date的一些方法都过时了)。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

    Calender类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance()方法创建即可。

    为了更加便捷的对日期进行操作,Calendar类对YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

  需要特别注意的是,Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

二、Calendar常量

Calendar.ERA=0
//年
Calendar.YEAR=1
//月
Calendar.MONTH=2
//当前时间是所在当前年的第几个星期
Calendar.WEEK_OF_YEAR=3
//当前时间是所在当前月的第几个星期
Calendar.WEEK_OF_MONTH=4
//当前时间为多少号(日历式的多少号)
Calendar.DATE=5
//一月中的第几天,结果等同于Calendar.DATE
Calendar.DAY_OF_MONTH=5
//一年中的第几天
Calendar.DAY_OF_YEAR=6
//一周7天当中,当前时间是星期几
Calendar.DAY_OF_WEEK=7
//当前时间是所在当前月的第几个星期,以月份天数为标准,一个月的1号为第一周,8号为第二周
Calendar.DAY_OF_WEEK_IN_MONTH=8
//上午和下午
Calendar.AM_PM=9
//小时(12小时制)
Calendar.HOUR=10
//小时(24小时)
Calendar.HOUR_OF_DAY=11
//分
Calendar.MINUTE=12
//秒
Calendar.SECOND=13
//毫秒
Calendar.MILLISECOND=14
// 以毫秒为单位指示距 GMT 的大致偏移量。  
Calendar.ZONE_OFFSET=15
// 以毫秒为单位指示夏令时的偏移量。
Calendar.DST_OFFSET=16
//星期天
Calendar.SUNDAY=1
//星期一
Calendar.MONDAY=2
//星期二
Calendar.TUESDAY=3
//星期三
Calendar.WEDNESDAY=4
//星期四
Calendar.THURSDAY=5
//星期五
Calendar.FRIDAY=6
//星期六
Calendar.SATURDAY=7
//一月
Calendar.JANUARY=0
//二月
Calendar.FEBRUARY=1
//三月
Calendar.MARCH=2
//四月
Calendar.APRIL=3
//五月
Calendar.MAY=4
//六月
Calendar.JUNE=5
//七月
Calendar.JULY=6
//八月
Calendar.AUGUST=7
//九月
Calendar.SEPTEMBER=8
//十月
Calendar.OCTOBER=9
//十一月
Calendar.NOVEMBER=10
//十二月
Calendar.DECEMBER=11
//描述十三月(某些时候有用)
Calendar.UNDECIMBER=12
//上午
Calendar.AM=0
//下午
Calendar.PM=1

三、常用方法使用示例

import java.util.Calendar;

/**
 * Created by zjx on 2016/5/02.
 */

public class CalendarTest {
    public static void main(String[] args) {
        //获取Calendar对象
        Calendar calendar = Calendar.getInstance();

        // 获取年
        int year = calendar.get(Calendar.YEAR);
        System.out.println("今年是" + year+"年");

        // 获取月,这里需要注意月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
        int month = calendar.get(Calendar.MONTH) + 1;
        System.out.println("本月" + month+"月");

        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("今天是" + day+"日");

        // 获取时:Calendar.HOUR是12小时制 Calendar.HOUR_OF_DAY 24小时制
        int hour = calendar.get(Calendar.HOUR);
        System.out.println("当前是" + hour+"小时");

        // 获取分
        int minute = calendar.get(Calendar.MINUTE);
        System.out.println("当前是" + minute+"分");

        // 获取秒
        int second = calendar.get(Calendar.SECOND);
        System.out.println("当前是" + minute+"秒");

        // 星期,英语国家星期从星期日开始计算
        int weekday = calendar.get(Calendar.DAY_OF_WEEK)-1;
        System.out.println("今天是星期" + weekday);

        // 今年的第 N 天
        int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println("今天是今年的第" + DAY_OF_YEAR+"天");

        // 本月第 N 天
        int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println("今天是本月的第" + String.valueOf(DAY_OF_MONTH)+"天");

        // 3小时以后
        calendar.add(Calendar.HOUR_OF_DAY, 3);
        int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);
        System.out.println("三小时以后是" + HOUR_OF_DAY+"小时");


        // 15 分钟以后
        calendar.add(Calendar.MINUTE, 15);
        int minute_15 = calendar.get(Calendar.MINUTE);
        System.out.println("十五分钟以后是" + minute_15+"分钟");

        // 30分钟前
        calendar.add(Calendar.MINUTE, -30);
        int minute_30 = calendar.get(Calendar.MINUTE);
        System.out.println("三十分钟之前是" + minute_30+"分");

        // 5天后
        calendar.add(Calendar.DATE,5);
        int day_5 = calendar.get(Calendar.DATE);
        System.out.println("五天后是" + day_5+"日");
    }
}

打印结果是:

 

今年是2016年
本月5月
今天是2日
当前是5小时
当前是32分
当前是32秒
今天是星期1
今天是今年的第123天
今天是本月的第2天
三小时以后是20小时
十五分钟以后是47分钟
三十分钟之前是17分
五天后是24日
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值