获取各个时间

1.获取当前日期是星期几

/**
 * 获取当前日期是星期几
 * @param localDateTime
 * @return
 */
@Override
public String dateToWeeks(LocalDateTime localDateTime) {
    Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    Calendar cal = Calendar.getInstance(); // 获得一个日历
    cal.setTime(date);
    int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
    if (w < 0) {
        w = 0;
    }
        return weekDays[w];
}

2. 获取当前日期朝前推几天是周一

/**
 * 获取当前日期朝前推几天是周一
 * @param date
 * @return
 */
@Override
public Integer dateToWeek(Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    //因为数组下标从0开始,而返回的是数组的内容,是数组{1,2,3,4,5,6,7}中用1~7来表示,所以要减1
    int week = cal.get(Calendar.DAY_OF_WEEK) - 1;
    if (week == 0) {
        week = 7;
    }
    return week-1;
}

 3.获取当天的最小时间与最大时间

/**
 * 获取当天的零点
 * @param localDateTime
 * @return
 */
@Override
public LocalDateTime getNowZero(LocalDateTime localDateTime) {
    LocalDateTime today_start = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MIN);//当天00:00:00
    return today_start;
}

/**
 * 获取当天的最大时间
 * @param localDateTime
 * @return
 */
@Override
public LocalDateTime getNowMax(LocalDateTime localDateTime) {
    LocalDateTime today_start = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MAX);//当天23:59:59
    return today_start;
}

4. 获取各个时间的零点

/**
 * 获取各个时间的零点
 * @return
 */
@Override
public TimesZeroVo getTimeZero(Date date,LocalDateTime localDateTime) {

    TimesZeroVo timesZeroVo = new TimesZeroVo();

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss");
    int year = Integer.valueOf(formatter.format(localDateTime).substring(0, 4)).intValue();

    //默认近7天的最小时间
    LocalDateTime sevenDaysMin = getNowZero(localDateTime.plusDays(-7).toLocalDate());
    //默认近7天的最大时间
    LocalDateTime sevenDaysMax = getNowMax(localDateTime.plusDays(-1).toLocalDate());
    //获取本周的周一的零点
    LocalDateTime firstDayOfWeek = getNowZero(localDateTime.plusDays(~(dateToWeek(date) - 1)).toLocalDate());
    //获取本月的第一天的零点
    LocalDateTime firstDayOfMonth = getNowZero(localDateTime.toLocalDate().with(TemporalAdjusters.firstDayOfMonth()));
    //获取本季度的第一天的零点
    LocalDateTime firstDayOfQuarter = getNowZero(LocalDate.of(localDateTime.toLocalDate().getYear(), localDateTime.toLocalDate().getMonth().firstMonthOfQuarter(), 1));
    //获取本年的第一天的零点
    LocalDateTime firstDayOfYear = getNowZero(LocalDate.from(localDateTime.with(TemporalAdjusters.firstDayOfYear())));
    //获取本周的最大时间
    LocalDateTime lastDayOfWeek = getNowMax(firstDayOfWeek.plusDays(6).toLocalDate());
    //获取本月的最大时间
    LocalDateTime lastDayOfMonth = getNowMax(localDateTime.toLocalDate().with(TemporalAdjusters.lastDayOfMonth()));
    //获取本季度的最大时间
    LocalDateTime lastDayOfQuarter = getNowMax(firstDayOfQuarter.plusMonths(2).toLocalDate().with(TemporalAdjusters.lastDayOfMonth()));
    //获取本年的最大时间
    LocalDateTime lastDayOfYear = getNowMax(localDateTime.toLocalDate().with(TemporalAdjusters.lastDayOfYear()));

    timesZeroVo.setSevenDaysMin(sevenDaysMin);
    timesZeroVo.setSevenDaysMax(sevenDaysMax);
    timesZeroVo.setFirstDayOfWeek(firstDayOfWeek);
    timesZeroVo.setFirstDayOfMonth(firstDayOfMonth);
    timesZeroVo.setFirstDayOfQuarter(firstDayOfQuarter);
    timesZeroVo.setFirstDayOfYear(firstDayOfYear);
    timesZeroVo.setLastDayOfWeek(lastDayOfWeek);
    timesZeroVo.setLastDayOfMonth(lastDayOfMonth);
    timesZeroVo.setLastDayOfQuarter(lastDayOfQuarter);
    timesZeroVo.setLastDayOfYear(lastDayOfYear);
    return timesZeroVo;
}

5. 获取本月每周的周一零点

/** 
 * 获取本月每周的周一零点
 * @return
 */
@Override
public List<AllWeekMinVO> allWeekMin(LocalDateTime dateTime) {

    List<AllWeekMinVO> list = new ArrayList<>();

    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    AllWeekMinVO allWeekMinVO = new AllWeekMinVO();

    TimesZeroVo timeZero = getTimeZero(Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()), dateTime);
    //获取本月第一周
    LocalDateTime firstDayOfMonth = timeZero.getFirstDayOfMonth();//起始时间
    allWeekMinVO.setWeekNumber("第1周");
    allWeekMinVO.setWeekMin(firstDayOfMonth);
    list.add(allWeekMinVO);

    //获取本月第二周
    Integer integer2 = dateToWeek(Date.from(firstDayOfMonth.atZone(ZoneId.systemDefault()).toInstant()));
    LocalDateTime beginDayOfTwo = getNowZero(firstDayOfMonth.plusDays(7 - integer2).toLocalDate());//起始时间

    //获取本月的最后一周
    LocalDateTime lastDayOfLastWeek = timeZero.getLastDayOfMonth();//结束时间
    Integer integer1 = dateToWeek(Date.from(lastDayOfLastWeek.atZone(ZoneId.systemDefault()).toInstant()));
    LocalDateTime firstDayOfLastWeek = getNowZero(lastDayOfLastWeek.plusDays(-integer1).toLocalDate());//起始时间

    int day1 = Integer.valueOf(df.format(beginDayOfTwo).substring(8, 10)).intValue();
    int day2 = Integer.valueOf(df.format(firstDayOfLastWeek).substring(8, 10)).intValue();

    //最后一周与第二周相差及周
    int number = (day2-day1)/7;

    for(int i=0;i<=number;i++){
        AllWeekMinVO allWeekMinVO1 = new AllWeekMinVO();
        LocalDateTime localDateTime = beginDayOfTwo.plusDays(7 * i);
        allWeekMinVO1.setWeekMin(localDateTime);
        allWeekMinVO1.setWeekNumber("第"+String.valueOf(i+2)+"周");
        list.add(allWeekMinVO1);
    }
    return list;
}

 6.获取本年每个季度的最小时间

/**
 * 获取本年每个季度的最小时间
 * @param dateTime
 * @return
 */
@Override
public List<AllWeekMinVO> allMinQuarterMin(LocalDateTime dateTime) {
    DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    int year = Integer.valueOf(df.format(dateTime).substring(0, 4)).intValue();

    List<AllWeekMinVO> list = new ArrayList<>();
    LocalDateTime of = LocalDateTime.of(year, 1, 1, 0, 0);
    for (int i=0;i<=3;i++){
        AllWeekMinVO allWeekMinVO = new AllWeekMinVO();
        LocalDateTime time = of.plusMonths(3*i);
        allWeekMinVO.setWeekNumber("第"+String.valueOf(i+1)+"季度");
        allWeekMinVO.setWeekMin(time);
        list.add(allWeekMinVO);
    }
    return list;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_57322959

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值