Когда я работаю над проектом, мне нужно сделать некоторые обработки и операции над датой и временем, но очень неудобно каждый раз использовать объект 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
Если вы думаете, что это хорошо написано, пожалуйста, следуйте за мнойДомашняя страница Наггетс. Для получения дополнительных статей, пожалуйста, посетитеадрес моего блога