JAVA处理日期相关(日期处理工具类)

import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import example.common.ConfigPropertiesManager;
import lombok.extern.slf4j.Slf4j;

import java.text.SimpleDateFormat;
import java.util.*;

/**

  • @Author: LiuKeXin

  • @Description:

  • @Date: 2024/6/12
    /
    @Slf4j
    public class DealDateUtil {
    /
    *

    • 获取当前时间所在周的周一和周日的日期时间
    • @return
      */
      public static Long getDate(int day) {
      String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
      TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
      Calendar c = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
      c.add(Calendar.DATE, day);//负数则为今天前的日期
      return DateUtil.beginOfDay(c.getTime()).getTime();
      }

    /**

    • 获得时间范围内,随机时分秒(以10分钟为单位)

    • @param beginTime

    • @param endTime

    • @return
      */
      public static Long getRandomDate(Date beginTime, Date endTime) {

      Integer randomTime = 20;

      List randomList = new ArrayList<>();

      Calendar calendar = Calendar.getInstance();
      calendar.setTime(beginTime); //获得当前日期 YYYY-MM-dd HH:mm:ss

      Date tmp2 = beginTime;
      while (tmp2.getTime() < endTime.getTime()) {
      tmp2 = calendar.getTime();
      // 分钟 + 20
      calendar.add(Calendar.MINUTE, randomTime);
      randomList.add(tmp2);
      }

      // 随机取集合中一位返回
      Random random = new Random();
      int index = random.nextInt(randomList.size());
      return randomList.get(index).getTime();
      }

    /**

    • 获取当前时间所在周的周一和周日的日期时间

    • @return
      */
      public static Map<String, String> getWeekDate() {
      Map<String, String> map = new HashMap();
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);

      Calendar cal = Calendar.getInstance();
      // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
      cal.setFirstDayOfWeek(Calendar.MONDAY);
      // 获得当前日期是一个星期的第几天
      int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
      if (dayWeek == 1) {
      dayWeek = 8;
      }

      cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - dayWeek);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
      Date mondayDate = cal.getTime();
      String weekBegin = sdf.format(mondayDate);

      cal.add(Calendar.DATE, 4 + cal.getFirstDayOfWeek());
      Date sundayDate = cal.getTime();
      String weekEnd = sdf.format(sundayDate);

      map.put(“mondayDate”, weekBegin + " 00:00:00");
      map.put(“sundayDate”, weekEnd + " 23:59:59");
      log.info(“getWeekDate res = {}”, JSON.toJSONString(map));
      return map;
      }

    /**

    • 获得本月第一天
      */
      public static Date getCurrentMonthStartDay() {
      String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
      TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
      Calendar calstr = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
      calstr.add(Calendar.MONTH, 0);//本月
      calstr.set(Calendar.DAY_OF_MONTH, 1);//设置为1号为本月第一天
      return DateUtil.beginOfDay(calstr.getTime());
      }

    /**

    • 获得本月最后一天 23:59:59
      */
      public static Date getCurrentMonthEndDay() {
      String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
      TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
      Calendar calstr = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
      calstr.add(Calendar.MONTH, 0);//本月
      calstr.set(Calendar.DAY_OF_MONTH, calstr.getActualMaximum(Calendar.DAY_OF_MONTH));//最后一天
      return DateUtil.endOfDay(calstr.getTime());
      }

    /**

    • 获得本周第一天 周日 00:00:00
      */
      public static Date getCurrentWeekStartDay() {
      String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
      TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
      Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
      calendar.set(Calendar.DAY_OF_WEEK, 2);
      return DateUtil.beginOfDay(calendar.getTime());
      }

    /**

    • 获得本周最后一天 周六 23:59:59
      */
      public static Date getCurrentWeekEndDay() {
      String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
      TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
      //得到一个Calendar实例
      Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
      cal.setTime(getCurrentWeekStartDay());
      cal.add(Calendar.DATE, 6);
      return DateUtil.endOfDay(cal.getTime());
      }

    /**

    • 今天开始时间
    • @return
      */
      public static Long getTodayStartTime() {
      return DateUtil.beginOfDay(new Date()).getTime();
      }

    /**

    • 今天结束时间
    • @return
      */
      public static Long getTodayEndTime() {
      return DateUtil.endOfDay(new Date()).getTime();
      }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值