Js如何操作日期

简介: Js如何操作日期

写在前面


今天有一个前端页面上的需求,要在前端计算出两个日期的差值天数。


一通百度后,发现并没有什么好的方式,如果大家有好的方式,希望大家可以分享给我学习一下。


目前前端计算时间的差值,就只能通过分割日期字符串,分别取出年份、月份、天数三个主要的值,如果是计算相差的小时数、分钟数,甚至是秒数,那就只能更细分一下了。


下面来看一下我的解决方案吧,大家可以针对性的参考一下。


计算两个时间的相差天数


声明两个时间点。


var startDate = '2021-11-15';
var endDate = '2021-12-15';


首先分割日期时间

var startDate = '2021-11-15';
var endDate = '2021-12-15';
var startDates = startDate.split('-');
var endDates = endDate.split('-');


随后我们通过js内置方法将字符串转成数字

var startDate = '2021-11-15';
var endDate = '2021-12-15';
var startDates = startDate.split('-');
var endDates = endDate.split('-');
var startDateYear = parseInt(startDates[0]);
var startDateMonth = parseInt(startDates[1]);
var startDateDay = parseInt(startDates[2]);
var endDateYear = parseInt(startDates[0]);
var endDateMonth = parseInt(startDates[1]);
var endDateDay = parseInt(startDates[2]);


最后我们来计算一下相差的年、月、天

var startDate = '2021-11-15';
var endDate = '2021-12-15';
var startDates = startDate.split('-');
var endDates = endDate.split('-');
var startDateYear = parseInt(startDates[0]);
var startDateMonth = parseInt(startDates[1]);
var startDateDay = parseInt(startDates[2]);
var endDateYear = parseInt(startDates[0]);
var endDateMonth = parseInt(startDates[1]);
var endDateDay = parseInt(startDates[2]);
var year = endDateYear - startDateYear;
var month = endDateMonth - startDateMonth;
var day = endDateDay - startDateDay;
//这里我没有处理闰年和不同月份的天数不同,大家可以自行补充上。
var total = day * 1 + month * 30 + year * 365;


最终计算出相差的天数并封装成方法供他人调用

function diff(startDate, endDate){
    var startDates = startDate.split('-');
    var endDates = endDate.split('-');
    var startDateYear = parseInt(startDates[0]);
    var startDateMonth = parseInt(startDates[1]);
    var startDateDay = parseInt(startDates[2]);
    var endDateYear = parseInt(startDates[0]);
    var endDateMonth = parseInt(startDates[1]);
    var endDateDay = parseInt(startDates[2]);
    var year = endDateYear - startDateYear;
    var month = endDateMonth - startDateMonth;
    var day = endDateDay - startDateDay;
    //这里我没有处理闰年和不同月份的天数不同,大家可以自行补充上。
    return day * 1 + month * 30 + year * 365;
}


总结


以上就是如何计算两个时间的相差天数的解决方案了,大家还有什么更好的方案吗?


相关文章
|
1月前
|
前端开发 JavaScript 数据处理
在JavaScript中,异步函数是指那些不会立即执行完毕,而是会在未来的某个时间点(比如某个操作完成后,或者某个事件触发后)才完成其执行的函数
【6月更文挑战第15天】JavaScript中的异步函数用于处理非同步任务,如网络请求或定时操作。它们使用回调、Promise或async/await。
26 7
|
1月前
|
JavaScript 前端开发 UED
JavaScript基础-DOM操作:查找、创建、修改
【6月更文挑战第12天】本文介绍了DOM基础,包括查找元素(getElementById、getElementsByClassName等)、创建新节点(createElement、createTextNode)和修改节点(innerText、innerHTML、setAttribute等)。强调了易错点,如ID唯一性、性能考量和安全问题,并提供了代码示例。熟练掌握DOM操作对前端开发至关重要,但应注意性能优化,适时使用框架或库。
JavaScript基础-DOM操作:查找、创建、修改
|
13天前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
16 1
|
13天前
|
存储 JavaScript 前端开发
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
9 1
|
17天前
|
JavaScript vr&ar 数据库
技术笔记:Js获取当前日期时间及其它操作
技术笔记:Js获取当前日期时间及其它操作
14 1
|
18天前
|
存储 前端开发 JavaScript
回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。
【6月更文挑战第27天】回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。它作为参数传递给其他函数,在特定条件满足或任务完成后被调用。例如,`asyncOperation`函数接受回调函数`handleResult`,模拟异步操作后,调用`handleResult`传递结果。这样,当异步任务完成时,`handleResult`负责处理结果。
15 1
|
23天前
|
存储 JavaScript 前端开发
JavaScript中的数组是核心数据结构,用于存储和操作序列数据
【6月更文挑战第22天】JavaScript中的数组是核心数据结构,用于存储和操作序列数据。创建数组可以使用字面量`[]`或`new Array()`。访问元素通过索引,如`myArray[0]`,修改同样如此。常见方法包括:`push()`添加元素至末尾,`pop()`移除末尾元素,`shift()`移除首元素,`unshift()`添加到开头,`join()`连接为字符串,`slice()`提取子数组,`splice()`进行删除、替换,`indexOf()`查找元素位置,`sort()`排序数组。还有其他如`reverse()`、`concat()`等方法。
97 2
|
26天前
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
|
10天前
|
JavaScript
vue 农历日期转公历日期(含插件 js-calendar-converter 使用教程)
vue 农历日期转公历日期(含插件 js-calendar-converter 使用教程)
11 0
|
1月前
|
JavaScript 前端开发 安全
【JavaScript 】DOM操作快速入门
【JavaScript 】DOM操作快速入门
17 2