Calendar的使用

Calendar类

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
System.out.println("cal: " + sdf.format(cal.getTime()));
System.out.println("YEAR :" + cal.get(Calendar.YEAR));
System.out.println("MONTH :" + cal.get(Calendar.MONTH));
System.out.println("DATE :" + cal.get(Calendar.DATE));
System.out.println("HOUR :" + cal.get(Calendar.HOUR));
System.out.println("MINUTE :" + cal.get(Calendar.MINUTE));
System.out.println("SECOND :" + cal.get(Calendar.SECOND));
System.out.println("MILLISECOND :" + cal.get(Calendar.MILLISECOND));
System.out.println("DAY_OF_MONTH :" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_WEEK :" + cal.get(Calendar.DAY_OF_WEEK));
System.out.println("DAY_OF_WEEK_IN_MONTH :" + cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("DAY_OF_YEAR :" + cal.get(Calendar.DAY_OF_YEAR));

System.out.println("WEEK_OF_MONTH :" + cal.get(Calendar.WEEK_OF_MONTH));
System.out.println("WEEK_OF_YEAR :" + cal.get(Calendar.WEEK_OF_YEAR));

cal:

     八月 2016
日 一 二 三 四 五 六
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

输出结果:

cal: 20160819 10:55:47
YEAR :2016 //年
MONTH :7 //月
DATE :19 //日,DAY_OF_MONTH的同义词
HOUR :10 //时 12-hour clock, [HOUR_OF_DAY] 24-hour clock
MINUTE :55 //分
SECOND :47 //秒
DAY_OF_MONTH :19 //当月的第19填
DAY_OF_WEEK :6 //所在星期的第6天
DAY_OF_WEEK_IN_MONTH :3 //按当月日期排,位于第3周。[1-7]-->1, [8-14]-->2
DAY_OF_YEAR :232 //当年的第232天
WEEK_OF_MONTH :3 //当月的第3周
WEEK_OF_YEAR :34 //当年的第34周

与get相对应的有set函数,例如设置时间为某个月的第一秒:

public static int getMonthStartTime(String dt) {
    Date date = string2Date(dt, "yyyyMM");
    Calendar cal = Calendar.getInstance();
    if (date == null) {
        return Integer.MAX_VALUE;
    }

    cal.setTime(date);
    cal.set(Calendar.DAY_OF_MONTH, 1);
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    date = cal.getTime();

    return (int)(date.getTime() / 1000);
}

设置时间为某个月的最后一秒:

public static int getMonthEndTime(String dt) {
    Date date = string2Date(dt, "yyyyMM");
    Calendar cal = Calendar.getInstance();
    if (date == null) {
        return Integer.MIN_VALUE;
    }

    cal.setTime(date);
    cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
    cal.set(Calendar.DAY_OF_MONTH, 0);
    cal.set(Calendar.HOUR_OF_DAY, 23);
    cal.set(Calendar.MINUTE, 59);
    cal.set(Calendar.SECOND, 59);
    cal.set(Calendar.MILLISECOND, 999);
    date = cal.getTime();

    return (int)(date.getTime() / 1000);
}

string2Date函数如下:

public static Date string2Date(String str, String formatString) {
    SimpleDateFormat formatter = new SimpleDateFormat(formatString);
    str = StringUtil.null2Trim(str);
    try {
        return formatter.parse(str);
    } catch (ParseException e) {
        return new Date();
    } catch (IllegalArgumentException e) {
        System.out.println("format string Illegal:" + formatString);
        return null;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值