Calendar 获得周五日期以及月年的最后一个工作日

一、获得周五

1.首先要明白,在美国眼里,周天是第一天

所以通过

        Calendar cal = Calendar.getInstance();
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);

获得的值应该是  星期天对应 1  星期六对应7

2.通过日历类Calendar,我们可以获得一周中的时间

        Calendar cal = Calendar.getInstance(); //创建日历类
        cal.setTime(time);                     //设置目标时间
		Integer dayWeek = cal.get(Calendar.DAY_OF_WEEK);//设置格式为获得week
		if (dayWeek.equals(1)) {
			dayWeek = 7;
		}
		cal.add(Calendar.DATE, 13 - dayWeek);//设置在当前时间上做加减
		Date result = cal.getTime();//获得时间

在这里我们想要获得某一个时间的周的周五的日期是多少,那么我们可以通过Calendar类

如果我们想要获得下一周的此刻,那么我们需要在时间上加上7,如果我想要获得下周五的时间,与我的差值,那么我需要使用周五的值来减去当前时间+7的值,由于周五在在一周中对应的数字为6,所以获得下周五就应该是13-dayWeek。

但是容易发现,因为周天是1而不是7,所以会导致当为周天的时候回变成下下周的周五。所以需要判断是否为周天

二、获得月最后一天以及月的最后一个工作日

1.想要获得月的最后一天,首先要知道一个月有多少天

cal.getActualMaximum(Calendar.DAY_OF_MONTH);//获得当月共有多少天

继续就是

cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

当然如果你想获得下个月的最后一天,那么先增加一个月后,在设置最为最后一天

		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.MONTH, 1);
		cal.set(Calendar.DAY_OF_MONTH)
                cal.getActualMaximum(Calendar.DAY_OF_MONTH));

2.获得月的最后一个工作日

那么已经是获得最后一天了,只要不是周六周天就可以

		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.MONTH, -1);
		cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
		int weekDay = cal.get(Calendar.DAY_OF_WEEK);
		switch (weekDay) {
		case 7:
			cal.add(Calendar.DATE, -1);
			break;
		case 1:
			cal.add(Calendar.DATE, -2);
			break;
		}

是周六就回退一天,周天就回退两天。

三、获得一年中,最后一个工作日

同理

		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.YEAR, -2);
		cal.set(Calendar.DAY_OF_YEAR, cal.getActualMaximum(Calendar.DAY_OF_YEAR));
		int weekDay = cal.get(Calendar.DAY_OF_WEEK);
		switch (weekDay) {
		case 7:
			cal.add(Calendar.DATE, -1);
			break;
		case 1:
			cal.add(Calendar.DATE, -2);
			break;
		}

这里需要注意,不要讲DAY_OF_YEAR 写成了YEAR了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值