返回
JS 日期操作技巧大放送:助你轻松搞定时间难题
前端
2023-12-22 08:51:16
前言
在日常的开发过程中,日期操作是非常常见,也是经常遇到的需求。在 JS 中,日期操作也有很多种方式。本篇文章将简单介绍一下常见的几种时间处理的方式,扩展包。并从一个简单的实际应用场景来分别看下,具体怎么用代码去实现。
JS 日期对象
日期获取
在 JS 中,我们可以使用 new Date()
来创建一个日期对象。这个对象包含了当前的日期和时间信息。
const now = new Date();
console.log(now); // 2023-03-08T06:30:00.000Z
日期格式化
我们可以使用 toLocaleDateString()
和 toLocaleTimeString()
方法来格式化日期对象。这两个方法可以将日期对象转换成字符串,并使用指定的格式来显示。
const now = new Date();
const dateString = now.toLocaleDateString();
const timeString = now.toLocaleTimeString();
console.log(dateString); // 2023-03-08
console.log(timeString); // 06:30:00
日期比较
我们可以使用 >
、<
、>=
、<=
和 ==
运算符来比较两个日期对象。这些运算符将返回一个布尔值,表示两个日期是否相等或哪个日期更大。
const date1 = new Date('2023-03-08');
const date2 = new Date('2023-03-09');
console.log(date1 > date2); // false
console.log(date1 < date2); // true
日期相加减
我们可以使用 setDate()
、setMonth()
和 setYear()
方法来对日期对象进行加减操作。这些方法可以将日期对象中的日期、月份或年份进行加减。
const date = new Date();
// 加一天
date.setDate(date.getDate() + 1);
// 加一个月
date.setMonth(date.getMonth() + 1);
// 加一年
date.setYear(date.getFullYear() + 1);
console.log(date); // 2023-03-09T06:30:00.000Z
日期扩展包
除了上述的内置方法外,我们还可以使用一些日期扩展包来帮助我们进行日期操作。这些扩展包可以提供一些更高级的日期操作功能。
moment.js
moment.js 是一个非常流行的日期扩展包。它提供了丰富的日期操作功能,包括日期格式化、日期比较、日期相加减、日期间隔计算等等。
const moment = require('moment');
const date = moment('2023-03-08');
// 格式化日期
const dateString = date.format('YYYY-MM-DD');
// 比较日期
const isSameDay = moment().isSame(date, 'day');
// 相加减日期
const nextWeek = moment().add(1, 'week');
console.log(dateString); // 2023-03-08
console.log(isSameDay); // false
console.log(nextWeek.format('YYYY-MM-DD')); // 2023-03-15
date-fns
date-fns 是另一个非常流行的日期扩展包。它也提供了丰富的日期操作功能,包括日期格式化、日期比较、日期相加减、日期间隔计算等等。
const dateFns = require('date-fns');
const date = dateFns.parse('2023-03-08');
// 格式化日期
const dateString = dateFns.format(date, 'YYYY-MM-DD');
// 比较日期
const isSameDay = dateFns.isSameDay(date, new Date());
// 相加减日期
const nextWeek = dateFns.addDays(date, 7);
console.log(dateString); // 2023-03-08
console.log(isSameDay); // false
console.log(dateFns.format(nextWeek, 'YYYY-MM-DD')); // 2023-03-15
实际应用场景
计算两个日期之间的天数
const date1 = new Date('2023-03-08');
const date2 = new Date('2023-03-15');
const diffDays = Math.floor((date2 - date1) / (1000 * 60 * 60 * 24));
console.log(diffDays); // 7
计算两个日期之间的工作日天数
const date1 = new Date('2023-03-08');
const date2 = new Date('2023-03-15');
const diffDays = Math.floor((date2 - date1) / (1000 * 60 * 60 * 24));
// 计算周末天数
const weekendDays = Math.floor(diffDays / 7) * 2;
// 计算工作日天数
const workDays = diffDays - weekendDays;
console.log(workDays); // 5
结语
在本文中,我们介绍了 JS 中日期操作的几种常见方式,以及一些常用的日期扩展包。希望这些技巧能够帮助您轻松搞定各种日期处理难题。