js 取时间差去掉周六周日实现代码

yizhihongxing

要计算时间差并去掉周六周日,我们可以使用 JavaScript 内置的 Date 对象,它提供了许多方法来处理日期和时间。以下是实现这个功能的步骤:

  1. 获取开始时间和结束时间的 Date 对象。

我们可以使用 Date 对象的构造函数来创建具有指定日期和时间的日期对象。例如,我们可以这样创建一个代表 2021 年 1 月 1 日的 Date 对象:new Date('2021-01-01')

  1. 计算时间差。

我们可以使用 Date 对象的 getTime() 方法来获取日期的 Unix 时间戳,它表示从 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。然后我们可以将结束时间的时间戳减去开始时间的时间戳,得到它们之间的时间差。例如:

const startTime = new Date('2021-01-01');
const endTime = new Date('2021-01-05');
const timeDiff = endTime.getTime() - startTime.getTime();
  1. 去掉周六周日。

为了去掉周六周日,我们需要检查日期对象的 getDay() 方法返回的数字是否为 0 或 6,这意味着它是周六或周日。如果是,我们将时间差减去这一天的毫秒数。

以下是一个完整的示例代码,它计算给定日期范围内去掉周六周日后的毫秒数差:

function getTimeDiffWithoutWeekend(startDate, endDate) {
  const DAY_IN_MS = 1000 * 60 * 60 * 24;
  const startTime = new Date(startDate);
  const endTime = new Date(endDate);
  let timeDiff = endTime.getTime() - startTime.getTime();
  const startDayOfWeek = startTime.getDay();
  const endDayOfWeek = endTime.getDay();

  // 如果开始时间是周六或周日,则将开始时间调整到下周一
  if (startDayOfWeek === 6) {
    startTime.setDate(startTime.getDate() + 2);
    timeDiff -= DAY_IN_MS * 2;
  } else if (startDayOfWeek === 0) {
    startTime.setDate(startTime.getDate() + 1);
    timeDiff -= DAY_IN_MS;
  }

  // 如果结束时间是周六或周日,则将结束时间调整到上周五
  if (endDayOfWeek === 6) {
    endTime.setDate(endTime.getDate() - 1);
    timeDiff -= DAY_IN_MS;
  } else if (endDayOfWeek === 0) {
    endTime.setDate(endTime.getDate() - 2);
    timeDiff -= DAY_IN_MS * 2;
  }

  // 计算周六和周日的天数
  const weekendDays = Math.floor(timeDiff / DAY_IN_MS / 7) * 2;
  // 如果开始和结束时间都不是周六或周日,但它们之间跨越了周六或周日,则将对应的天数减去
  if (startDayOfWeek < endDayOfWeek) {
    if (startDayOfWeek === 0 && endDayOfWeek === 6) {
      weekendDays -= 1;
    } else {
      weekendDays -= 2;
    }
  }

  // 返回去掉周六周日的毫秒数差
  return timeDiff - weekendDays * DAY_IN_MS;
}

以下是两个示例,它们分别计算从 2021 年 1 月 1 日到 2021 年 1 月 5 日和从 2021 年 5 月 1 日到 2021 年 5 月 31 日的时间差,去掉其中的周六周日:

console.log(getTimeDiffWithoutWeekend('2021-01-01', '2021-01-05')); // 259200000
console.log(getTimeDiffWithoutWeekend('2021-05-01', '2021-05-31')); // 1872000000

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js 取时间差去掉周六周日实现代码 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript中interval与setTimeOut的区别示例介绍

    让我们来详细讲解一下“JavaScript中Interval与SetTimeout的区别示例介绍”。 标题 JavaScript中Interval与SetTimeout的区别示例介绍 正文 JavaScript中的Interval与SetTimeout都是用来实现定时器的方法,但是二者之间还是有一些区别的。 SetTimeout SetTimeout的作用是…

    JavaScript 2023年6月10日
    00
  • JS实现至少包含字母、大小写数字、字符的密码等级的两种方法

    要实现至少包含字母、大小写数字、字符的密码等级,可以采用以下两种方法: 方法一:使用正则表达式判断密码是否符合规范 首先,需要定义一个正则表达式来判断密码是否符合要求,可以使用以下正则表达式: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*]).{8,}$/ 其中: (?=.*\d):表示密码中必须包含至…

    JavaScript 2023年6月10日
    00
  • javascript htmlencode函数(ff兼容版) 主要是编辑器中反转html代码

    JavaScript中的htmlencode函数主要用于将包含特殊符号(如<、>、&等)的字符串转换成HTML实体,以便在HTML页面中正常显示。 以下是一个简单的htmlencode函数,支持FF浏览器: function htmlEncode(s) { var el = document.createElement(‘div’); e…

    JavaScript 2023年5月19日
    00
  • JavaScript中的Array 对象(数组对象)

    JavaScript中的Array 对象 在JavaScript中,Array是一个用于存储一组元素的对象。可以通过[]或者Array构造函数来创建一个数组。 创建数组 通过字面量创建数组 const arr = [1, 2, 3]; 通过构造函数创建数组 const arr = new Array(1, 2, 3); 或者使用以下方式来创建空数组: con…

    JavaScript 2023年5月27日
    00
  • JavaScript根据json生成html表格的示例代码

    下面我将详细讲解如何使用JavaScript根据JSON数据生成HTML表格的完整攻略。 前置知识 在了解这个示例代码之前,需要你掌握一些HTML、CSS和JavaScript的基础知识,同时了解JSON数据格式以及如何创建JavaScript数组和对象。如果你还不熟悉这些知识,请先学习一下。 示例代码 下面是一个根据JSON数据动态生成HTML表格的示例代…

    JavaScript 2023年5月27日
    00
  • 深入理解JS函数的参数(arguments)的使用

    下面是深入理解JS函数参数(arguments)的使用攻略。 1. 什么是JS函数参数(arguments)? 在JS函数中,我们可以使用参数(argument)来接收外部传入的数据,这些参数被封装在一个类数组对象arguments中。arguments是代表传入函数的参数的对象,可以通过它访问函数的形参和实参。 2. arguments对象方法 argum…

    JavaScript 2023年5月27日
    00
  • 表单验证正则表达式实例代码详解

    《表单验证正则表达式实例代码详解》是一篇关于前端表单验证的教程,主要介绍了如何使用正则表达式进行表单验证。以下是本文的完整攻略。 一、表单验证正则表达式基础 1.1 正则表达式的概念 正则表达式是一种用来描述、匹配、搜索文本的方式。通过使用正则表达式,我们可以快速有效地验证用户输入的内容是否符合规则。 1.2 常用正则表达式语法 字符匹配:使用普通字符匹配具…

    JavaScript 2023年6月10日
    00
  • jquery轻量级数字动画插件countUp.js使用详解

    jquery轻量级数字动画插件countUp.js使用详解 一、什么是countUp.js countUp.js 是一款非常流行的 jQuery 数字动画插件,可以方便地实现数字的动态变化效果,可以用于展示数字统计、倒计时等场景。 二、countUp.js 的优劣势 优点: 简单易用,使用方便。 支持数值格式化,可以自定义数值变化的格式样式。 支持在动画过程…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部