这是一个简单的 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 https://momentjs.com/。 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()
:
溢出——发生溢出时设置。例如,第 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()
and subtract()
方法。以下示例显示如何将 7 天、7 月或 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();
此代码示例显示“几秒钟前”。如果我们向 moment 对象提供日期,它将根据差异显示从现在开始的时间范围。例如,以下代码显示“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, '天'), '天');
console.log('差异为 ', dateB.diff(dateC, '月份'), '月份');
日期查询
Moment.js
还提供了日期比较方法。这些方法是isBefore()
, isAfter()
, and 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()
方法,特别适合您的情况;)