java区间函数_基于Java8的可复用时间区间获取方法

本文介绍了如何使用Java8时间函数来处理和获取如本周、本月等约定时间段,通过枚举和时间类封装,实现了一个可复用的区间获取方法,同时也支持在指定区间内进行下一级时间间隔的获取。
摘要由CSDN通过智能技术生成

在项目开发中,特别是报表展示的应用场景,我们经常会涉及到一些时间段的处理情况。例如本周,本月,上周,上月这种human reading的显示方式,其后台应转换为一个时间段,本文结合这个需求,提出一种可复用的方法,同时还包括在这个时间段内做一步sub-interval的方法。

基本数据结构

ReportDateRequest

首先从用户角度看,需要接收用户的选择,是一个约定俗成的时间区间,或是自定义的。该Request就封装了用户的时间区间选择,既包括一些固定时间段,也可以是自定义时间段,具体定义如下:

public class ReportDateRequest {

/**

* 时间请求的类型

* @see ReportDateCondition

*/

private int type;

/**

* 自定义情况下的上限(最晚的值)

*/

private long customUpper;

/**

* 自定义情况下的下限(最早的值)

*/

private long customLower;

type的定义使用一个枚举值固定下来,并根据每个值的不同特性,可转化为不同的时间段,如下。

ReportDateCondition

如上所述,RDC定义了可以选择的约定俗成的时间段的基本含义,具体定义如下(未列出构造函数):

public enum ReportDateCondition {

/**

* 任意时间段

*/

CUSTOM(0),

/**

* 当日

*/

TODAY(1),

/**

* 本周

*/

THIS_WEEK(2),

/**

* 上周

*/

LAST_WEEK(20),

/**

* 本月

*/

THIS_MONTH(3),

/**

* 上月

*/

LAST_MONTH(30)

}

枚举值中的code,即用于给前端标记当前用户选择的是何种时间区间。

ReportTimeLimit

有了枚举值,我们就可以将其转化为一种时间上下限,该类就是定义了一种时间上下限,根据每个枚举值可以生成一个ReportTimeLimit类。另外为了满足一些报表需要同比,环比的要求,在该类中再加入同比(上年同时间段)和环比(上日/周/月同时间段)的定义。具体描述如下

public class ReportTimeLimit {

/**

* 当前时间上限

*/

long currentUpper;

/**

* 当前时间下限

*/

long currentLower;

/**

* 环比上限

*/

long momUpper;

/**

* 环比下限

*/

long momLower;

/**

* 同比上限

*/

long yoyUpper;

/**

* 同比下限

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值