package com.jtzx.crm.module.sys.util; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONUtil; import com.google.common.collect.Lists; import com.jtzx.crm.module.sys.model.response.DateSelectBO; import java.time.LocalDateTime; import java.util.List; public class DateSelectUtil { public static List getDateData() { List dateData = Lists.newArrayList(); dateData.add(getBO("全部",0,null)); dateData.add(getBO("今天",0, DateField.DAY_OF_YEAR)); dateData.add(getBO("昨天",1, DateField.DAY_OF_YEAR)); dateData.add(getBO("近3天",3, DateField.DAY_OF_YEAR)); dateData.add(getBO("近1周",7, DateField.DAY_OF_YEAR)); dateData.add(getBO("近1月",1,DateField.MONTH)); dateData.add(getBO("近3月",3,DateField.MONTH)); dateData.add(getBO("近半年",6,DateField.MONTH)); dateData.add(getBO("自定义",null,null)); return dateData; } public static void main(String[] args) { // DateSelectBO bo = getBO("本周", 7, DateField.DAY_OF_WEEK); DateSelectBO bo = getBO("最近3个月",3,DateField.MONTH); // DateSelectBO bo = getBO("近1周",7,DateField.DAY_OF_YEAR); System.out.println(JSONUtil.toJsonStr(bo)); } /** * 获取对象 * @param name * @param number * @param dateField * @return */ public static DateSelectBO getBO(String name, Integer number, DateField dateField) { DateSelectBO bo = DateSelectBO.builder().build(); bo.setName(name); bo.setSortCode(number); bo.setSelectStatus(false); if (dateField == null && number == null) { bo.setSelectStatus(true); } else { //取当天的最后一秒,往前计算开始时间 DateTime endDay = DateUtil.endOfDay(DateUtil.date()); LocalDateTime endDateTime = DateUtil.toLocalDateTime(endDay); bo.setEndDate(endDateTime); if(dateField != null && dateField.equals(DateField.DAY_OF_WEEK)){ DateTime dateTime = DateUtil.beginOfWeek(DateUtil.date()); bo.setStartDate(DateUtil.toLocalDateTime(dateTime)); }else { bo.setStartDate(getStartDate(number, dateField, DateUtil.date())); } } return bo; } public static LocalDateTime getStartDate(Integer number, DateField dateField, DateTime endDay) { DateTime startDate = DateUtil.offset(endDay, dateField, -number); String str = DateUtil.formatDateTime(startDate); return DateUtil.toLocalDateTime(DateUtil.parse(str)); } }