相关文章推荐
八块腹肌的生菜  ·  Java ...·  8 月前    · 
跑龙套的红烧肉  ·  spring ...·  1 年前    · 
* @return String[]{季度起始日期, 季度结束日期} public static String [ ] getSeasonDay ( String dateStr ) { SimpleDateFormat sdf = new SimpleDateFormat ( DATE_PATTERN ) ; Date date ; if ( StringUtils . isNotEmpty ( dateStr ) ) { try { date = sdf . parse ( dateStr ) ; } catch ( ParseException e ) { log . error ( "转换字符串:{}为日期失败,错误信息:{}" , dateStr , e ) ; return null ; } else { date = new Date ( ) ; Calendar c = Calendar . getInstance ( ) ; c . setTime ( date ) ; int month = c . get ( Calendar . MONTH ) ; //数学原理: // moth属性=月份-1,3个月=1季度, // 那么季度的最大月份÷3 =季度,(月份-1(即month属性))÷3向下取整 = 上一个季度; // 上个季度*3=上个季度最大月份=当前季度最小月份-1=当前季度最小月份month属性 Calendar startC = Calendar . getInstance ( ) ; startC . setTime ( date ) ; int seasonStartMonthNum = ( int ) ( Math . floor ( month / 3.0 ) * 3 ) ; startC . set ( Calendar . MONTH , seasonStartMonthNum ) ; startC . set ( Calendar . DAY_OF_MONTH , 1 ) ; String seasonStartDateStr = sdf . format ( startC . getTime ( ) ) ; Calendar endC = Calendar . getInstance ( ) ; endC . setTime ( date ) ; //当前季度最大月=当前最小月+2; int seasonEndMonthNum ; seasonEndMonthNum = seasonStartMonthNum + 2 ; endC . set ( Calendar . MONTH , seasonEndMonthNum ) ; endC . set ( Calendar . DAY_OF_MONTH , endC . getActualMaximum ( Calendar . DAY_OF_MONTH ) ) ; String seasonEndDateStr = sdf . format ( endC . getTime ( ) ) ; return new String [ ] { seasonStartDateStr , seasonEndDateStr } ; * 获取当前季度日期——方式二 * @param dateStr 当前日期字符串,默认为当前日期 * @return String[]{季度起始日期, 季度结束日期} public static String [ ] getSeasonDay22 ( String dateStr ) { SimpleDateFormat sdf = new SimpleDateFormat ( DATE_PATTERN ) ; Date date ; if ( StringUtils . isNotEmpty ( dateStr ) ) { try { date = sdf . parse ( dateStr ) ; } catch ( ParseException e ) { log . error ( "转换字符串:{}为日期失败,错误信息:{}" , dateStr , e ) ; return null ; } else { date = new Date ( ) ; Calendar c = Calendar . getInstance ( ) ; c . setTime ( date ) ; //数学原理: // moth属性=月份-1,3个月=1季度, // 那么季度的最大月份÷3 =季度,(月份(即month属性+1))÷3向上取整 = 季度; // 当前季度最大月份=季度*3,而最大月month属性=最大月份-1 int month = c . get ( Calendar . MONTH ) ; int seasonEndMonthNum = ( int ) ( Math . ceil ( ( month + 1 ) / 3.0 ) * 3 ) - 1 ; Calendar endC = Calendar . getInstance ( ) ; endC . setTime ( date ) ; endC . set ( Calendar . MONTH , seasonEndMonthNum ) ; endC . set ( Calendar . DAY_OF_MONTH , endC . getActualMaximum ( Calendar . DAY_OF_MONTH ) ) ; Calendar startC = Calendar . getInstance ( ) ; startC . setTime ( date ) ; //季度最小月份= 季度最大月份-2; int seasonStartMonthNum = seasonEndMonthNum - 2 ; startC . set ( Calendar . MONTH , seasonStartMonthNum ) ; startC . set ( Calendar . DAY_OF_MONTH , 1 ) ; String seasonStartDateStr = sdf . format ( startC . getTime ( ) ) ; String seasonEndDateStr = sdf . format ( endC . getTime ( ) ) ; return new String [ ] { seasonStartDateStr , seasonEndDateStr } ; * 获取当前时间季度 * @param dateStr * @return public int getQuarterOfDay ( String dateStr ) { int month = 0 ; try { Date date = parseDateStr ( dateStr ) ; Calendar c = Calendar . getInstance ( ) ; c . setTime ( date ) ; //由于month从0开始,所有这里+1 month = c . get ( Calendar . MONTH ) + 1 ; } catch ( Exception e ) { log . error ( "转换日期失败," , e ) ; return 0 ; return month % 3 == 0 ? month / 3 : month / 3 + 1 ; import java .text.ParseException; import java .text.SimpleDateFormat; import java .util.Calendar; import java .util.Date; * 根据给定时间 获取 周、月度、 季度 、年度开始结束时间 * @author wsp public class DateCalendarUtil { 拿到返回值,将其以逗号分隔开就可以用了(参数的dateType值需要前端传,前端选择相应的时间,比如前端传3,那就是 获取 当前 时间的本月开始时间与结束时间)项目中的大屏统计经常会用到根据时间去统计相关数据,所以就需要 获取 相应的开始时间与结束时间,以便在sql中能查询出对应区间的数据。代码直接复制就可以用,返回的数据就是开始时间与结束时间。 计算 日期 所在的 季度 在实际的软件 开发 中,有时候需要根据 日期 来进行一些 季度 相关的计算,比如根据给定的 日期 确定该 日期 所在的 季度 。在 Java 中,我们可以通过一些简单的计算来实现这个功能。接下来,我们将介绍如何使用 Java 代码来计算 日期 所在的 季度 。 在计算 日期 所在的 季度 时,我们可以采用以下逻辑: 首先,根据给定的 日期 ,... 1、 获取 本月的第一天和最后一天。2、 获取 今天的时间范围。3、 获取 本周的第一天和最后一天4、 获取 上个月的时间范围。5、 获取 季度 的第一天和最后一天。6、 获取 今年的第一天和最后一天。7、 获取 上一年的第一天和最后一天。