JS获取当天、本周、本月、本年开始时间和结束时间

9 篇文章 1 订阅
1 篇文章 0 订阅

一天的开始时间

function startTime(time) {
  const nowTimeDate = new Date(time);
  return nowTimeDate.setHours(0, 0, 0, 0);
}

一天的结束时间

function endTime(time) {
  const nowTimeDate = new Date(time);
  return nowTimeDate.setHours(23, 59, 59, 999);
}

获取当天开始时间和结束时间

function getTodayStartTimeAndEndTime(time) {
  time = time ? time : new Date();
  return {
    startTime: new Date(time.setHours(0, 0, 0, 0)),
    endTime: new Date(time.setHours(23, 59, 59, 999)),
  };
}

获取本周开始时间和结束时间

function getCurrentWeekStartTimeAndEndTime(time) {
  const current = time ? time : new Date();
  // current是本周的第几天
  let nowDayOfWeek = current.getDay();
  if (nowDayOfWeek === 0) nowDayOfWeek = 7;
  const dayNum = 1 * 24 * 60 * 60 * 1000;
  // 获取本周星期一的时间,星期一作为一周的第一天
  const firstDate = new Date(current.valueOf() - (nowDayOfWeek - 1) * dayNum);
  // 获取本周星期天的时间,星期天作为一周的最后一天
  const lastDate = new Date(new Date(firstDate).valueOf() + 6 * dayNum);
  return {
    startTime: new Date(startTime(firstDate)),
    endTime: new Date(endTime(lastDate)),
  };
}

获取本月开始时间和结束时间

获取本月第一天
function getCurrentMonthFirst(time) {
  const date = time ? time : new Date();
  date.setDate(1);
  return startTime(date);
}
获取本月最后一天
function getCurrentMonthLast(time) {
  const date = time ? time : new Date();
  const currentMonth = date.getMonth();
  const nextMonth = currentMonth + 1;
  const nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  const oneDay = 24 * 60 * 60 * 1000;
  return endTime(new Date(nextMonthFirstDay - oneDay));
}

获取本年开始时间和结束时间

获取本年第一天
function getCurrentYearFirst(date) {
  date = date ? date : new Date();
  date.setDate(1);
  date.setMonth(0);
  return startTime(date);
}
获取本年最后一天
function getCurrentYearLast(date) {
  date = date ? date : new Date();
  date.setFullYear(date.getFullYear() + 1); // 设置到明年
  date.setMonth(0); // 明年的0月,也就是对应到1月,是存在的哦,不是不存在的0
  date.setDate(0); // 明年的0日
  return endTime(date);
}
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
好的,我理解了你的问题。使用 LambdaQueryWrapper 根据当前时间来查询数据库中当日、本周本月本年的数据,可以通过以下方式实现: 1. 当日数据查询: ```java // 获取当日的起止时间 LocalDateTime now = LocalDateTime.now(); LocalDateTime start = LocalDateTime.of(now.toLocalDate(), LocalTime.MIN); LocalDateTime end = LocalDateTime.of(now.toLocalDate(), LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 2. 本周数据查询: ```java // 获取本周的起止时间 LocalDateTime now = LocalDateTime.now(); LocalDateTime start = now.with(DayOfWeek.MONDAY).with(LocalTime.MIN); LocalDateTime end = now.with(DayOfWeek.SUNDAY).with(LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 3. 本月数据查询: ```java // 获取本月的起止时间 LocalDateTime now = LocalDateTime.now(); LocalDateTime start = now.with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN); LocalDateTime end = now.with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 4. 本年数据查询: ```java // 获取本年的起止时间 LocalDateTime now = LocalDateTime.now(); LocalDateTime start = now.with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN); LocalDateTime end = now.with(TemporalAdjusters.lastDayOfYear()).with(LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 以上代码中,`Entity` 是你要查询的实体类,`entityMapper` 是对应的 Mapper 接口。我们首先获取当前时间,然后根据当前时间计算出时间范围,最后构建查询条件并执行查询。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值