Плагин обработки времени JS MomentJS

внешний интерфейс JavaScript jQuery

Когда я работаю над проектом, мне нужно сделать некоторые обработки и операции над датой и временем, но очень неудобно каждый раз использовать объект Date, который идет с JS, и приходится писать кучу нудного кода, который также очень болезненно поддерживать. Я нашел JS-плагин для обработки даты и времени в Интернете и обнаружил, что MomentJS очень полезен.Изучив его синтаксис, я обнаружил, что он очень лаконичен и прост для понимания, обладает сильной масштабируемостью и гибкими методами вызова. Многие методы вызываются в различных формах и поддерживают несколько способов передачи параметров. Ниже приведена простая схема использования

Создание объекта «Момент»

MomentJS инкапсулирует время в объект, объект момента.Этот объект может быть сконструирован разными способами и может быть сконструирован в виде входящих строк, массивов и объектов.

текущее системное время

Если ничего не передано, получить текущее системное время.

var now = moment()

Струнная конструкция

Вы можете передать строку. Во-первых, он проверит, соответствует ли формат строкиISO 8601формат, если нет, звонитеnew Date(string)строить.

строка известного формата

moment('2017-01-02');               //年月日
moment('2017-01-02 13');            //年月日 小时
moment('2017-01-02 13:12');         //年月日 小时分钟
moment('2017-01-02 13:12:52');      //年月日 小时分钟秒
moment('2017-01-02 13:12:52.123');  //年月日 小时分钟秒 毫秒

строка + формат

Если формат даты не совпадаетISO 8601, но вы знаете формат входной строки, и вы также можете разобрать ее таким образом.Разобранный синтаксис имеет следующие четыре формата:

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

Формат первого известного времени, формат передается как второй параметр

moment('12-25-1995 12/43/53', 'MM-DD-YYYY HH/mm/ss')

Значения форматных букв следующие:

Input Example Description
YYYY 2014 4-значный год
YY 14 2-значный год
Q 1..4 квартал, установите месяц как первый месяц квартала
M MM 1..12 месяц
MMM MMMM Jan..December название месяца
D DD 1..31 день месяца
DDD DDDD 1..365 день года
H HH 0..23 24-часовые часы
h hh 1..12 12-часовые часы
m mm 0..59 минута
s ss 0..59 второй

Во-вторых, вы можете передать ключ локальной области в качестве третьего параметра.

moment('2012 juillet', 'YYYY MMM', 'fr');
moment('2012 July',    'YYYY MMM', 'en');

Шаблоны сопоставления MomentJS очень слабые и могут привести к нежелательному поведению. от2.3.0Начиная с версии, мы можем передать логическое значение в конце, чтобы заставить Moment использовать строгое сопоставление с образцом. Строгий режим требует, чтобы входная строка и формат были точно такими же.

moment('It is 2012-05-25', 'YYYY-MM-DD').isValid();       // true
moment('It is 2012-05-25', 'YYYY-MM-DD', true).isValid(); // false
moment('2012-05-25',       'YYYY-MM-DD', true).isValid(); // true

Строка + Мультиформат

Если вы не знаете точного формата входной строки, но знаете, что это один из некоторых форматов, вы можете передать несколько форматов в виде массива, и формат, который соответствует первому, будет выходным результатом.

moment("12-25-1995", ["MM-DD-YYYY", "YYYY-MM-DD"]);

объект

Мы также можем создать объект момента в виде передачи объекта, который включает в себя свойства некоторых единиц времени.

moment({ y    :2010, M     :3, d   :5, h    :15, m      :10, s      :3, ms          :123});
moment({ year :2010, month :3, day :5, hour :15, minute :10, second :3, millisecond :123});
moment({ years:2010, months:3, days:5, hours:15, minutes:10, seconds:3, milliseconds:123});
moment({ years:2010, months:3, date:5, hours:15, minutes:10, seconds:3, milliseconds:123});

И день, и дата в приведенном выше коде представляют день текущего месяца.

Объект даты

Мы также можем передать собственный объект Date JS, чтобы создать объект момента.

var day = new Date(2011, 9, 16);
var dayWrapper = moment(day);

множество

Мы можем создать объект момента, передав массив чисел. Значение каждого числа в массиве следующее:

// [年, 月, 日, 时, 分, 秒, 毫秒]
moment([2010, 1, 14, 15, 25, 50, 125]);
//2010年2月14日15时25分50秒125毫秒

Следует отметить, что месяцы, часы, минуты, секунды и миллисекунды в массиве начинаются с 0, а год и день начинаются с 1.

принять значение и присвоить

MomentJS использует методы get и set, которые можно перегрузить, подобно тому, как мы это делали в jQuery. Мы можем вызывать эти методы без передачи параметров для получения и передачи параметров для установки.

Встроенная функция

Получить или установить миллисекунды, диапазон настроек от 0 до 999

moment().millisecond(Number);
moment().millisecond(); // Number
moment().milliseconds(Number);
moment().milliseconds(); // Number

Получить или установить второй, диапазон установки от 0 до 59

moment().second(Number);
moment().second(); // Number
moment().seconds(Number);
moment().seconds(); // Number

Получите или установите минуты, диапазон установки от 0 до 59

moment().minute(Number);
moment().minute(); // Number
moment().minutes(Number);
moment().minutes(); // Number

Получить или установить час, установленный диапазон от 0 до 23

moment().hour(Number);
moment().hour(); // Number
moment().hours(Number);
moment().hours(); // Number

Получить или установить дату, заданный диапазон от 1 до 31

moment().date(Number);
moment().date(); // Number
moment().dates(Number);
moment().dates(); // Number

Получить или установить день недели, диапазон настроек от 0 (воскресенье) до 6 (суббота)

moment().day(Number|String);
moment().day(); // Number
moment().days(Number|String);
moment().days(); // Number

Получить или установить количество дней в году, диапазон настроек от 1 до 366.

moment().dayOfYear(Number);
moment().dayOfYear(); // Number

Получить или установить неделю года

moment().week(Number);
moment().week(); // Number
moment().weeks(Number);
moment().weeks(); // Number

Получить или установить месяц года, установленный диапазон от 0 до 11

moment().month(Number|String);
moment().month(); // Number
moment().months(Number|String);
moment().months(); // Number

Получить или установить четверть, диапазон от 1 до 4

moment().quarter(); // Number
moment().quarter(Number);

Получить или установить год, установленный диапазон от -270000 до 270000

moment().year(Number);
moment().year(); // Number
moment().years(Number);
moment().years(); // Number

Функции значения и присваивания

В дополнение ко многим вышеперечисленным функциям, MomentJS также имеет функцию для получения и присвоения унифицированных значений, получения и установки.

moment().get('year');
moment().get('month');  // 0 to 11
moment().get('date');
moment().get('hour');
moment().get('minute');
moment().get('second');
moment().get('millisecond');

Функция set получает единицу измерения в качестве первого параметра и значение единицы измерения в качестве второго параметра. Если вы хотите установить несколько значений, вы также можете передать объект.

moment().set('year', 2013);
moment().set('month', 3); //四月
moment().set('date', 1);
moment().set('hour', 13);
moment().set('minute', 20);
moment().set('second', 30);
moment().set('millisecond', 123);

moment().set({'year': 2013, 'month': 3});

функция макс/мин

Функция max возвращает самый большой экземпляр данного объекта момента, то есть экземпляр, ближайший к будущему.

var a = moment('2017-12-01');
var b = moment('2017-12-06');
moment.max(a, b);  // b

Функция min возвращает наименьший экземпляр данного объекта момента, то есть экземпляр, ближайший к прошлому.

var a = moment('2017-12-01');
var b = moment('2017-12-06');
moment.min(a, b);  // a

действовать

Иногда нам нужно вовремя выполнить ряд операций, наиболее распространенными из которых являются сложение и вычитание. MomentJS предоставляет нам множество методов для вызова. Режим, используемый MomentJS, аналогичен режиму jQuery.Это связанный вызов используемых функций, что позволяет нам связывать операции.Код выглядит следующим образом:

moment()
  .add(7, 'days')
  .subtract(1, 'months')
  .year(2009)
  .hours(0)
  .minutes(0)
  .seconds(0);

добавитьдополнение

Функция add позволяет нам отодвинуть время объекта Moment назад, ее синтаксис следующий:

moment().add(Number, String);
moment().add(Duration);
moment().add(Object);

Мы можем передать количество времени и единицу времени, которые мы хотим увеличить, например, чтобы отложить его на 7 дней:

moment().add(7, 'days');

Конечно, функция добавления также позволяет нам указать аббревиатуру для единицы времени:

moment().add(7, 'd');
единица времени сокращение
years y
quarters Q
months M
weeks W
days d
hours h
minutes m
seconds s
milliseconds ms

Если вы хотите увеличить разные единицы времени одновременно, вы можете передать это в виде объекта:

moment().add(7, 'days').add(1, 'months');
moment().add({days:7,months:1});

Следует отметить, что если количество дней в исходной дате больше, чем общее количество дней в месяце новой даты, она становится последним днем ​​месяца:

// 01-31
moment([2010, 0, 31]);                  

// 02-28 
moment([2010, 0, 31]).add(1, 'months'); 
//2月份没有31号,自动变为最后一天,即28号

вычесть вычитание

Использование функции вычитания похоже на использование функции добавления, за исключением того, что время сдвигается вперед.

moment().subtract(Number, String);
moment().subtract(Duration);
moment().subtract(Object);

startOf время начала

Функция startOf устанавливает время объекта Moment равным времени начала входящей единицы.

moment()                    //当前时间2017-12-09
moment().startOf('year');   //今年年初2017-01-01
moment().startOf('month');  //这个月开始2017-12-01
moment().startOf('quarter');//这个季度开始2017-10-01
moment().startOf('week');   //这周开始2017-12-03(周日为开始)
moment().startOf('isoWeek');//这周开始2017-12-04(根据ISO 8601,周一为开始)
moment().startOf('day');    //今天的开始时间2017-12-09 00:00:00:000
moment().startOf('hour');   //今天当前小时开始2017-12-09 13:00:00:000
moment().startOf('minute'); //今天当前分钟开始2017-12-09 13:14:00:000
moment().startOf('second'); //今天当前秒钟开始2017-12-09 13:14:15:000

endOf время окончания

Функция endOf устанавливает время объекта Moment равным времени окончания входящей единицы. Использование аналогично startOf.

moment().endOf(String);

показывать

После того, как мы проанализируем и обработаем объект Moment, нам нужно отобразить окончательный результат.

формат формат

Функция форматирования принимает строку токена и заменяет токен соответствующим значением.

moment().format();                                // "2014-09-08T08:02:17-05:00" (ISO 8601)
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
moment().format("ddd, hA");                       // "Sun, 3PM"

Соответствующее соотношение выглядит следующим образом:

- Token входить
Луна M 1 2 .. 11 12
Mo 1st 2nd ... 11th 12th
MM 01 02 ... 11 12
MMM Jan Feb ... Nov Dec
MMMM January February ... November December
четверть Q 1 2 3 4
день месяца D 1 2 ... 30 31
Do 1st 2nd ... 30th 31st
DD 01 02 ... 30 31
день года DDD 1 2 ... 365 366
DDDo st 2nd ... 365th 366th
DDDD 001 002 ... 365 366
день недели d 0 1 ... 5 6
do 0th 1st ... 5th 6th
dd Su Mo ... Fr Sa
ddd Sun Mon ... Fri Sat
dddd Sunday Monday ... Friday Saturday
неделя года w 1 2 ... 52 53
wo 1st 2nd ... 52nd 53rd
ww 01 02 ... 52 53
год YY 70 71 ... 29 30
YYYY 1970 1971 ... 2029 2030
AM/PM A AM PM
a am pm
Час H 0 1 ... 22 23
HH 00 01 ... 22 23
h 1 2 ... 11 12
hh 01 02 ... 11 12
минута m 0 1 ... 58 59
mm 00 01 ... 58 59
второй s 0 1 ... 58 59
ss 00 01 ... 58 59
миллисекунда ms 000 001 ... 998 999

разница во времени

грамматика

moment().diff(Moment|String|Number|Date|Array);
moment().diff(Moment|String|Number|Date|Array, String);
moment().diff(Moment|String|Number|Date|Array, String, Boolean);

Функция diff может помочь нам получить разницу во времени между двумя объектами Moment.Единица измерения по умолчанию — миллисекунды.

var a = moment([2017, 12, 29]);
var b = moment([2017, 12, 28]);
a.diff(b) // 86400000

Помимо получения миллисекунд в качестве единицы измерения, функция diff также поддерживает получение других единиц времени, которые передаются в качестве второго параметра:

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // 1

Поддерживаемые единицы измерения: годы, месяцы, недели, дни, часы, минуты, секунды и миллисекунды. По умолчанию возвращаемое значение будет округлено до десятичных знаков. Если вы хотите быть более точным и получить десятичное значение, передайте true для третьего параметра.

var a = moment([2008, 6]);
var b = moment([2007, 0]);
a.diff(b, 'years');       // 1
a.diff(b, 'years', true); // 1.5

daysInMonth получает количество дней в текущем месяце

daysInMonth получает общее количество дней в текущем месяце

moment("2012-02", "YYYY-MM").daysInMonth() // 29
moment("2012-01", "YYYY-MM").daysInMonth() // 31

toDate to Date объект

Преобразование объекта Moment в собственный объект даты js

toArray в массив

Возвращает массив времени, который имеет то же значение, что и массив, переданный при создании объекта Moment.

moment().toArray(); // [2017, 12, 9, 13, 40, 16, 154];

toObject

Преобразуйте объект Moment в объект, содержащий год, месяц, день, час, минуту, секунду и миллисекунду.

moment().toObject()  // {
                     //     years: 2017
                     //     months: 12
                     //     date: 9,
                     //     hours: 13,
                     //     minutes: 40,
                     //     seconds: 18,
                     //     milliseconds: 600
                     // }

Запрос

Операция запроса в основном используется для определения того, удовлетворяет ли Момент определенным условиям.

до того, как

moment().isBefore(Moment|String|Number|Date|Array);
moment().isBefore(Moment|String|Number|Date|Array, String);

isBefore определяет, находится ли объект момента до определенного момента времени.

moment('2010-10-20').isBefore('2010-10-21'); // true

Единицей сравнения по умолчанию являются миллисекунды, но если мы хотим ограничиться другими единицами времени, мы можем передать их как второй параметр. Допустимые единицы такие же, как те, которые поддерживает startOf.

console.log(moment('2017-11-03').isBefore('2017-11-06'))
console.log(moment('2017-11-03').isBefore('2017-11-06', 'year'))
console.log(moment('2017-11-03').isBefore('2018-11-06', 'year'))

То же самое

moment().isSame(Moment|String|Number|Date|Array);
moment().isSame(Moment|String|Number|Date|Array, String);

isSame определяет, является ли объект момента таким же, как другой объект момента.

moment('2010-10-20').isSame('2010-10-20'); // true
moment('2010-10-20').isSame('2010-10-21'); // false

Точно так же, если мы хотим изменить единицу сравнения на другую, ее также можно передать в качестве второго параметра. Допустимые единицы такие же, как те, которые поддерживает startOf.

moment('2010-10-20').isSame('2009-12-31', 'year');  // false
moment('2010-10-20').isSame('2010-01-01', 'year');  // true

При передаче во втором аргументе он будет соответствовать всем единицам того же или большего размера. Например, если передан месяц, будут сравниваться год и месяц, а если передана дата, будут сравниваться год, месяц и день.

// false, 不同的年
moment('2010-01-01').isSame('2011-01-01', 'month');

// false, 不同的月
moment('2010-01-01').isSame('2010-02-01', 'day');

isAfter

isBefore определяет, находится ли объект момента после определенного момента времени. Допустимые единицы такие же, как те, которые поддерживает startOf.

moment('2010-10-20').isAfter('2010-10-19'); // true

Между

moment().isBetween(moment-like, moment-like);
moment().isBetween(moment-like, moment-like, String);
//moment-like 表示 Moment|String|Number|Date|Array

Определяет, находится ли объект момента между двумя другими моментами времени.

moment('2017-10-20').isBetween('2017-10-19', '2017-10-25'); // true

Передайте второй параметр как предельную единицу. Допустимые единицы такие же, как те, которые поддерживает startOf.

moment('2010-10-20').isBetween('2010-01-01', '2012-01-01', 'year'); // false
moment('2010-10-20').isBetween('2009-12-31', '2012-01-01', 'year'); // true

isLeapYear — високосный год

Возвращает true, если год високосный, в противном случае возвращает false.

moment([2000]).isLeapYear() // true
moment([2001]).isLeapYear() // false
moment([2100]).isLeapYear() // false

isMoment — это моментальный объект

Определите, является ли объект «Момент»

moment.isMoment() // false
moment.isMoment(new Date()) // false
moment.isMoment(moment()) // true

isDate - это объект даты

Определите, является ли объект Date

moment.isDate(); // false
moment.isDate(new Date()); // true
moment.isDate(moment()); // false

Если вы думаете, что это хорошо написано, пожалуйста, следуйте за мнойДомашняя страница Наггетс. Для получения дополнительных статей, пожалуйста, посетитеадрес моего блога