Это простая манипуляция с датой 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
свободно доступно для скачиванияс домашней страницы проекта .Moment.js можно запустить как из браузера, так и из приложения Node.js
.Чтобы использовать его с Node, установите модуль с помощью следующей команды:
npm install moment
Затем просто require () и используйте его в своем приложении, как показано ниже.
const moment = require('moment');
moment().format();
Чтобы запустить Moment из браузера, загрузите сценарий и включите его, используя тег script, как показано в следующем примере.Moment.js создает объект глобального момента, который можно использовать для доступа ко всем функциям анализа и манипуляции с датой и временем.
*** Форматирование даты ****
ВВ прошлом я вспоминал преобразование строк даты в объекты Date, захват отдельных фрагментов данных, а затем выполнение конкатенации строк.Moment.js
упростила процесс преобразования даты в любой конкретный формат.Преобразование формата даты с помощью Moment выполняется просто, как показано в следующем примере.
moment().format('YYYY MM DD');
moment()
отображает текущую дату и время, а format()
преобразует текущую дату и время в указанный формат.В этом примере форматируется дата в виде четырехзначного года, за которым следует пробел, за которым следует двухзначный месяц, еще один пробел и двухзначная дата.Вы можете увидеть этот код в действии, ознакомившись с этой демонстрацией.
Проверка даты
Еще одна досадная задача, которую имеет Moment.jsупрощена проверка даты.Чтобы выполнить проверку, просто передайте строку даты объекту момента вместе с форматом даты и вызовите метод 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()
и subtract()
.В следующем примере показано, как к текущей дате добавляются семь дней, месяцев или недель.
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, «месяцы»), «месяцы»);
Дата запросов
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()
, особенно для вашего случая;)