这是一个简单的 JS 日期操作,您可以在代码中使用它。
let date = new Date();
console.log('Today is: ' + date.toLocaleString());
date.setDate(date.getDate() - 30);
console.log('30 days ago was: ' + date.toLocaleString());
但是,我强烈建议您使用 moment.js library
您可以在此处获得有关如何使用它的完整说明,包括。例子:
Moment.js 入门:
Moment.js 可从项目的homepage 免费下载。 Moment.js 可以从浏览器以及Node.js 应用程序中运行。为了在 Node 中使用它,请使用以下命令安装模块。
npm install moment
然后,只需 require() 并在您的应用程序中使用它,如下所示。
const moment = require('moment');
moment().format();
为了从浏览器运行 Moment,请下载脚本并使用脚本标签包含它,如下例所示。 Moment.js 创建了一个全局 moment 对象,可用于访问所有日期和时间解析和操作功能。
***日期格式****
在过去,我记得将日期字符串转换为 Date 对象,获取单个数据,然后执行字符串连接。 Moment.js 简化了将日期转换为任何特定格式的过程。使用 Moment 转换日期格式很简单,如下例所示。
moment().format('YYYY MM DD');
moment() 给出当前日期和时间,而format() 将当前日期和时间转换为指定格式。此示例将日期格式化为四位数的年份、后跟一个空格、后跟两位数的月份、另一个空格和一个两位数的日期。您可以通过查看此演示来查看此代码的运行情况。
日期验证
Moment.js 简化的另一个烦人的任务是日期验证。为了执行验证,只需将日期字符串连同日期格式一起传递给 moment 对象,然后调用 isValid() 方法。如果日期有效,此方法返回 true,否则返回 false。下面显示了一个示例,以及随附的演示。
let dateEntered = $('#txtEnteredDate').val();
if (!moment(dateEntered,'MM-DD-YYYY').isValid()) {
console.log('Invalid Date');
} else {
console.log('Valid Date');
}
moment() 返回的对象中还有许多其他有用的标志:
overflow – 这是在发生溢出时设置的。例如,第 13 个月或第 32 天。
*invalidMonth* – Set when the month is invalid, like Jannnuaarry.
*empty* – Set when the entered date contains nothing parsable.
*nullInput* – Set when the entered date is null.
操纵日期
有许多用于操作矩对象的选项。例如,您可以添加或减去天、月、年等。这是通过add() 和subtract() 方法实现的。以下示例显示了如何将 7 天、几个月或几周添加到当前日期。
moment().add('days', 7); // adds 7 days to current date
moment().add('months', 7); // adds 7 months to current date
moment().add('years', 7); // adds 7 years to current date
同样,subtract() 方法如下所示。
moment().subtract('days', 7); // subtracts 7 days to current date
moment().subtract('months', 7); // subtracts 7 months to current date
moment().subtract('years', 7); // subtracts 7 years to current date
现在的时间
另一个常见任务是确定两个日期之间存在多少时间。对于从当前日期计算时间,Moment.js 使用名为fromNow() 的方法。这是一个检查从当前时间开始存在多少时间的示例:
moment().fromNow();
此代码示例显示“几秒钟前”。如果我们为时刻对象提供日期,它将根据差异显示从现在开始的时间范围。例如,以下代码显示“7 天前”。
const dateA = moment().subtract('days', 7);
dateA.fromNow();
从另一个日期开始的时间
fromNow() 用于将时间与当前日期进行比较。这只是from() 的一个特例,它比较两个任意日期。下面显示了一个使用 from() 的示例。此代码显示“在一天内”。您可以通过查看此演示来查看此代码的运行情况。
const dateB = moment('2019-12-12');
const dateC = moment('2019-12-11');
console.log(dateB.from(dateC));
计算日期之间的差异
Moment.js 提供了一种计算两个日期之间差异的方法。默认情况下以毫秒为单位计算差异,但也可以以天、月、年等形式返回。要计算差异,请调用 diff() 方法。此方法将日期作为其第一个参数。可以使用可选的第二个参数指定时间单位。如果这不包括在内,则使用毫秒。以下示例和演示说明了如何使用 diff()。
const dateB = moment('2019-11-11');
const dateC = moment('2019-10-11');
console.log('差是', dateB.diff(dateC), '毫秒');
console.log('区别是', dateB.diff(dateC, 'days'), 'days');
console.log('差是', dateB.diff(dateC, 'months'), 'months');
日期查询
Moment.js还提供日期比较方法。这些方法是isBefore()、isAfter() 和isSame()。顾名思义,这些方法返回一个布尔值,指示一个日期是在另一个日期之前、之后还是等于另一个日期。使用 isAfter() 的示例如下所示。
console.log(moment('2010-09-20').isAfter('2010-10-19')); // returns false
console.log(moment('2010-11-20').isAfter('2010-10-19')); // returns true
还有一个isLeapYear() 方法可以检查闰年。
我还建议查看calendar() 方法,尤其是针对您的情况;)