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

要计算时间差并去掉周六周日,我们可以使用 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日

相关文章

  • js DOM 元素ID就是全局变量

    JavaScript DOM 元素ID就是全局变量这一特性,指的是在使用getElementById获取DOM元素的时候,该元素的ID将自动成为一个全局变量,可以直接访问和操作该元素。 例如,如果我们有一个按钮元素,其ID为“myButton”,我们可以使用以下代码获取该按钮元素: var btn = document.getElementById(&quo…

    JavaScript 2023年6月10日
    00
  • 鼠标事件延时切换插件

    鼠标事件延时切换插件攻略 插件介绍 鼠标事件延时切换插件是一款基于jQuery库实现的插件,可以实现在鼠标停留在某一元素上时,延时展示该元素的内容,并在鼠标离开该元素后,自动隐藏该元素的内容,从而提高页面的交互性。 插件使用方法 引入jQuery库和鼠标事件延时切换插件的js文件 <script src="https://cdn.bootcd…

    JavaScript 2023年6月11日
    00
  • JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式

    转换字符串格式的时间为类似“几秒前”、“几分钟前”、“几小时前”、“几天前”等格式,通常需要先将字符串格式的时间转换成时间戳,然后获取当前时间戳与字符串格式时间戳之间的差值,最后根据差值计算出对应的时间差,即可得到所需的格式化时间。 以下是完整的攻略: 步骤一:将字符串时间转换成时间戳 在JS中可以使用Date对象将字符串格式的时间转换成时间戳,具体代码如下…

    JavaScript 2023年5月27日
    00
  • 简单介绍JavaScript的变量和数据类型

    当我们在编写JavaScript程序时,变量和数据类型是经常需要用到的概念,下面就来详细讲解一下。 基本概念 变量 变量是用来存储数据的容器,可以通过使用变量名来引用这些数据。JavaScript中的变量声明可以使用 var、let、const 等关键字来完成,其中 var 关键字是早期版本的语法,let 和 const 关键字是ES6中新增的。 数据类型 …

    JavaScript 2023年5月28日
    00
  • jQuery和JavaScript节点插入元素的方法对比

    jQuery和JavaScript都可以通过节点插入元素来动态修改页面内容。下面将详细讲解jQuery和JavaScript节点插入元素的方法对比。 jQuery节点插入元素 jQuery的节点插入元素的方法主要有以下三个: 1. append() append()方法用于向元素的结尾插入内容,语法如下: $(selector).append(content…

    JavaScript 2023年6月10日
    00
  • 一起学写js Calender日历控件

    一起学写 JavaScript Calender 日历控件 – 完整攻略 本攻略将帮助你学习如何编写一个简单的 JavaScript 日历控件。我们将使用原生 JavaScript 实现该控件,这样可以更好地学习和理解 JavaScript 和 DOM 操作。 步骤 1:HTML 结构 我们需要一个 HTML 结构作为日历控件的基础。以下是一个基本的 HTM…

    JavaScript 2023年5月27日
    00
  • JS前端使用canvas实现物体的点选示例

    下面是“JS前端使用canvas实现物体的点选示例”的完整攻略: 简介 本攻略旨在帮助JS前端开发者使用canvas实现物体的点选功能。点选,即用户点击鼠标后能够判断该处是否落在某个物体上,从而实现交互操作。 准备 在开始编写代码前,需要准备以下工具和材料:- 编辑器:Visual Studio Code、Sublime Text、Atom等- 浏览器:Ch…

    JavaScript 2023年5月28日
    00
  • 前端使用JSON.stringify实现深拷贝的巨坑详解

    首先,需要明确深拷贝和浅拷贝的概念。 在JavaScript中,对象的赋值有两种方式:深拷贝和浅拷贝。浅拷贝只是将对象的引用复制给了新的变量,而深拷贝则是递归地复制对象及所有嵌套的子对象。 JSON.stringify可以将一个JavaScript对象序列化成一个JSON字符串,而JSON.parse则可以将一个JSON字符串反序列化成一个JavaScrip…

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