calendar 获取季度的第一天_【Java】判断当前日期所在的时间段(今日、本周、本月、本季度、本年)...

本文介绍了如何使用Java的Calendar类创建一个工具类,用于获取当前日期所属的今日、本周、本月、本季度和本年的起始和结束时间,详细阐述了每个时间段的处理方法,并提供了完整源码。
摘要由CSDN通过智能技术生成

前言:

之前做记账app的时候,需要根据当前日期去查询当前所在的时间段,以方便统计这段时间内的支出总额,这里写一个工具类,方便下次需要的时候直接来拿,下面开始介绍:

内容概述:

一、Calender类的简述

二、对时间段的处理

三、效果

四、源码

具体内容:

一、Calender类的简述:

Calender类是一个方便用于日期计算的类,比如计算一年以后的时间,直接cal.add(Calendar.YEAR, 1);,或是计算2个月后的时间,直接cal.add(Calendar.MONTH, 2);,而不用像Date类一样去计算毫秒,但是Calender类也有一个坑,就是他的月份都是从0开始的,如果当前月份为3月,cal.get(Calendar.MONTH);得到的是2(这点不足在JDK1.8后的LocalDate类中有改善),这是平时使用的时候需要注意的一点

二、对时间段的处理:

时分秒的处理:

每一段时间的开始都是用某日的00:00:00开始的,以最后一天的23:59:59结束的,所以我们直接设置开始时间的Calender的时分秒为0,结束时间的Calender的时分秒为23:59:59

//开始时间

calendar.set(Calendar.HOUR_OF_DAY, 0);

calendar.set(Calendar.MINUTE, 0);

calendar.set(Calendar.SECOND, 0);

//结束时间

calendar.set(Calendar.HOUR_OF_DAY, 23);

calendar.set(Calendar.MINUTE, 59);

calendar.set(Calendar.SECOND, 59);

本周的开始时间和结束时间

本周的开始,通过设置Calendar.DAY_OF_WEEK为Calendar.MONDAY

本周的结束,通过把Calendar.DAY_OF_WEEK加6,就能得到星期日的日期

//开始

cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

//结束

cal.add(Calendar.DAY_OF_WEEK, 6);

本月的开始时间和结束时间

本月的开始:将Calendar.DAY_OF_MONTH属性设置为1,就得到了当前月份的第一天

本月的结束:先通过calendar.getActualMaximum(Calendar.DAY_OF_MONTH)得到当前月的最后一天,再赋值给Calendar.DAY_OF_MONTH属性即可

//开始

calendar.setTimeInMillis(new Date().getTime());

calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天

//结束

calendar.setTimeInMillis(new Date().getTime());

calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天

本季度的开始时间和结束时间

本季度的开始:通过获取c.get(Calendar.MONTH)加1后的结果,得到当前的月份(加1是因为Calender中每个月都是从0开始的),然后判断当前月是哪个季度的,得到当前季度得时间

本季度的结束:在得到本季度开始的时间后,将月份加2个月cal.add(Calendar.MONTH, 2);,并按照之前得到本月最后一天那样处理一次即可

//开始

int currentMonth = c.get(Calendar.MONTH) + 1;

if (currentMonth >= 1 && currentMonth <= 3)

c.set(Calendar.MONTH, 0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值