Update momentjs
// FREEBIE
This commit is contained in:
parent
682a160b2c
commit
d686eb4f68
1 changed files with 114 additions and 34 deletions
|
@ -1,5 +1,5 @@
|
||||||
//! moment.js
|
//! moment.js
|
||||||
//! version : 2.8.3
|
//! version : 2.8.4
|
||||||
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
||||||
//! license : MIT
|
//! license : MIT
|
||||||
//! momentjs.com
|
//! momentjs.com
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
************************************/
|
************************************/
|
||||||
|
|
||||||
var moment,
|
var moment,
|
||||||
VERSION = '2.8.3',
|
VERSION = '2.8.4',
|
||||||
// the global-scope this is NOT the global object in Node.js
|
// the global-scope this is NOT the global object in Node.js
|
||||||
globalScope = typeof global !== 'undefined' ? global : this,
|
globalScope = typeof global !== 'undefined' ? global : this,
|
||||||
oldGlobalMoment,
|
oldGlobalMoment,
|
||||||
|
@ -33,7 +33,7 @@
|
||||||
momentProperties = [],
|
momentProperties = [],
|
||||||
|
|
||||||
// check for nodeJS
|
// check for nodeJS
|
||||||
hasModule = (typeof module !== 'undefined' && module.exports),
|
hasModule = (typeof module !== 'undefined' && module && module.exports),
|
||||||
|
|
||||||
// ASP.NET json date format regex
|
// ASP.NET json date format regex
|
||||||
aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
|
aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
|
||||||
|
@ -44,8 +44,8 @@
|
||||||
isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
|
isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,
|
||||||
|
|
||||||
// format tokens
|
// format tokens
|
||||||
formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
|
formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,
|
||||||
localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,
|
localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
|
||||||
|
|
||||||
// parsing token regexes
|
// parsing token regexes
|
||||||
parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
|
parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
|
||||||
|
@ -56,8 +56,8 @@
|
||||||
parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
|
parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
|
||||||
parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
|
parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
|
||||||
parseTokenT = /T/i, // T (ISO separator)
|
parseTokenT = /T/i, // T (ISO separator)
|
||||||
|
parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123
|
||||||
parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
|
parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
|
||||||
parseTokenOrdinal = /\d{1,2}/,
|
|
||||||
|
|
||||||
//strict parsing regexes
|
//strict parsing regexes
|
||||||
parseTokenOneDigit = /\d/, // 0 - 9
|
parseTokenOneDigit = /\d/, // 0 - 9
|
||||||
|
@ -272,6 +272,9 @@
|
||||||
zz : function () {
|
zz : function () {
|
||||||
return this.zoneName();
|
return this.zoneName();
|
||||||
},
|
},
|
||||||
|
x : function () {
|
||||||
|
return this.valueOf();
|
||||||
|
},
|
||||||
X : function () {
|
X : function () {
|
||||||
return this.unix();
|
return this.unix();
|
||||||
},
|
},
|
||||||
|
@ -698,7 +701,10 @@
|
||||||
overflow =
|
overflow =
|
||||||
m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
|
m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
|
||||||
m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
|
m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
|
||||||
m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR :
|
m._a[HOUR] < 0 || m._a[HOUR] > 24 ||
|
||||||
|
(m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 ||
|
||||||
|
m._a[SECOND] !== 0 ||
|
||||||
|
m._a[MILLISECOND] !== 0)) ? HOUR :
|
||||||
m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
|
m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
|
||||||
m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
|
m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
|
||||||
m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
|
m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
|
||||||
|
@ -725,7 +731,8 @@
|
||||||
if (m._strict) {
|
if (m._strict) {
|
||||||
m._isValid = m._isValid &&
|
m._isValid = m._isValid &&
|
||||||
m._pf.charsLeftOver === 0 &&
|
m._pf.charsLeftOver === 0 &&
|
||||||
m._pf.unusedTokens.length === 0;
|
m._pf.unusedTokens.length === 0 &&
|
||||||
|
m._pf.bigHour === undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return m._isValid;
|
return m._isValid;
|
||||||
|
@ -777,8 +784,18 @@
|
||||||
|
|
||||||
// Return a moment from input, that is local/utc/zone equivalent to model.
|
// Return a moment from input, that is local/utc/zone equivalent to model.
|
||||||
function makeAs(input, model) {
|
function makeAs(input, model) {
|
||||||
return model._isUTC ? moment(input).zone(model._offset || 0) :
|
var res, diff;
|
||||||
moment(input).local();
|
if (model._isUTC) {
|
||||||
|
res = model.clone();
|
||||||
|
diff = (moment.isMoment(input) || isDate(input) ?
|
||||||
|
+input : +moment(input)) - (+res);
|
||||||
|
// Use low-level api, because this fn is low-level api.
|
||||||
|
res._d.setTime(+res._d + diff);
|
||||||
|
moment.updateOffset(res, false);
|
||||||
|
return res;
|
||||||
|
} else {
|
||||||
|
return moment(input).local();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************
|
/************************************
|
||||||
|
@ -798,6 +815,9 @@
|
||||||
this['_' + i] = prop;
|
this['_' + i] = prop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Lenient ordinal parsing accepts just a number in addition to
|
||||||
|
// number + (possibly) stuff coming from _ordinalParseLenient.
|
||||||
|
this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source);
|
||||||
},
|
},
|
||||||
|
|
||||||
_months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
|
_months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
|
||||||
|
@ -810,22 +830,32 @@
|
||||||
return this._monthsShort[m.month()];
|
return this._monthsShort[m.month()];
|
||||||
},
|
},
|
||||||
|
|
||||||
monthsParse : function (monthName) {
|
monthsParse : function (monthName, format, strict) {
|
||||||
var i, mom, regex;
|
var i, mom, regex;
|
||||||
|
|
||||||
if (!this._monthsParse) {
|
if (!this._monthsParse) {
|
||||||
this._monthsParse = [];
|
this._monthsParse = [];
|
||||||
|
this._longMonthsParse = [];
|
||||||
|
this._shortMonthsParse = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 12; i++) {
|
for (i = 0; i < 12; i++) {
|
||||||
// make the regex if we don't have it already
|
// make the regex if we don't have it already
|
||||||
if (!this._monthsParse[i]) {
|
mom = moment.utc([2000, i]);
|
||||||
mom = moment.utc([2000, i]);
|
if (strict && !this._longMonthsParse[i]) {
|
||||||
|
this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
|
||||||
|
this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
|
||||||
|
}
|
||||||
|
if (!strict && !this._monthsParse[i]) {
|
||||||
regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
|
regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
|
||||||
this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
|
this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
|
||||||
}
|
}
|
||||||
// test the regex
|
// test the regex
|
||||||
if (this._monthsParse[i].test(monthName)) {
|
if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
|
||||||
|
return i;
|
||||||
|
} else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
|
||||||
|
return i;
|
||||||
|
} else if (!strict && this._monthsParse[i].test(monthName)) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -868,6 +898,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
_longDateFormat : {
|
_longDateFormat : {
|
||||||
|
LTS : 'h:mm:ss A',
|
||||||
LT : 'h:mm A',
|
LT : 'h:mm A',
|
||||||
L : 'MM/DD/YYYY',
|
L : 'MM/DD/YYYY',
|
||||||
LL : 'MMMM D, YYYY',
|
LL : 'MMMM D, YYYY',
|
||||||
|
@ -908,9 +939,9 @@
|
||||||
lastWeek : '[Last] dddd [at] LT',
|
lastWeek : '[Last] dddd [at] LT',
|
||||||
sameElse : 'L'
|
sameElse : 'L'
|
||||||
},
|
},
|
||||||
calendar : function (key, mom) {
|
calendar : function (key, mom, now) {
|
||||||
var output = this._calendar[key];
|
var output = this._calendar[key];
|
||||||
return typeof output === 'function' ? output.apply(mom) : output;
|
return typeof output === 'function' ? output.apply(mom, [now]) : output;
|
||||||
},
|
},
|
||||||
|
|
||||||
_relativeTime : {
|
_relativeTime : {
|
||||||
|
@ -945,6 +976,7 @@
|
||||||
return this._ordinal.replace('%d', number);
|
return this._ordinal.replace('%d', number);
|
||||||
},
|
},
|
||||||
_ordinal : '%d',
|
_ordinal : '%d',
|
||||||
|
_ordinalParse : /\d{1,2}/,
|
||||||
|
|
||||||
preparse : function (string) {
|
preparse : function (string) {
|
||||||
return string;
|
return string;
|
||||||
|
@ -1086,6 +1118,8 @@
|
||||||
case 'a':
|
case 'a':
|
||||||
case 'A':
|
case 'A':
|
||||||
return config._locale._meridiemParse;
|
return config._locale._meridiemParse;
|
||||||
|
case 'x':
|
||||||
|
return parseTokenOffsetMs;
|
||||||
case 'X':
|
case 'X':
|
||||||
return parseTokenTimestampMs;
|
return parseTokenTimestampMs;
|
||||||
case 'Z':
|
case 'Z':
|
||||||
|
@ -1120,7 +1154,7 @@
|
||||||
case 'E':
|
case 'E':
|
||||||
return parseTokenOneOrTwoDigits;
|
return parseTokenOneOrTwoDigits;
|
||||||
case 'Do':
|
case 'Do':
|
||||||
return parseTokenOrdinal;
|
return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient;
|
||||||
default :
|
default :
|
||||||
a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
|
a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
|
||||||
return a;
|
return a;
|
||||||
|
@ -1157,7 +1191,7 @@
|
||||||
break;
|
break;
|
||||||
case 'MMM' : // fall through to MMMM
|
case 'MMM' : // fall through to MMMM
|
||||||
case 'MMMM' :
|
case 'MMMM' :
|
||||||
a = config._locale.monthsParse(input);
|
a = config._locale.monthsParse(input, token, config._strict);
|
||||||
// if we didn't find a month name, mark the date as invalid.
|
// if we didn't find a month name, mark the date as invalid.
|
||||||
if (a != null) {
|
if (a != null) {
|
||||||
datePartArray[MONTH] = a;
|
datePartArray[MONTH] = a;
|
||||||
|
@ -1174,7 +1208,8 @@
|
||||||
break;
|
break;
|
||||||
case 'Do' :
|
case 'Do' :
|
||||||
if (input != null) {
|
if (input != null) {
|
||||||
datePartArray[DATE] = toInt(parseInt(input, 10));
|
datePartArray[DATE] = toInt(parseInt(
|
||||||
|
input.match(/\d{1,2}/)[0], 10));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// DAY OF YEAR
|
// DAY OF YEAR
|
||||||
|
@ -1199,11 +1234,13 @@
|
||||||
case 'A' :
|
case 'A' :
|
||||||
config._isPm = config._locale.isPM(input);
|
config._isPm = config._locale.isPM(input);
|
||||||
break;
|
break;
|
||||||
// 24 HOUR
|
// HOUR
|
||||||
case 'H' : // fall through to hh
|
|
||||||
case 'HH' : // fall through to hh
|
|
||||||
case 'h' : // fall through to hh
|
case 'h' : // fall through to hh
|
||||||
case 'hh' :
|
case 'hh' :
|
||||||
|
config._pf.bigHour = true;
|
||||||
|
/* falls through */
|
||||||
|
case 'H' : // fall through to HH
|
||||||
|
case 'HH' :
|
||||||
datePartArray[HOUR] = toInt(input);
|
datePartArray[HOUR] = toInt(input);
|
||||||
break;
|
break;
|
||||||
// MINUTE
|
// MINUTE
|
||||||
|
@ -1223,6 +1260,10 @@
|
||||||
case 'SSSS' :
|
case 'SSSS' :
|
||||||
datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
|
datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
|
||||||
break;
|
break;
|
||||||
|
// UNIX OFFSET (MILLISECONDS)
|
||||||
|
case 'x':
|
||||||
|
config._d = new Date(toInt(input));
|
||||||
|
break;
|
||||||
// UNIX TIMESTAMP WITH MS
|
// UNIX TIMESTAMP WITH MS
|
||||||
case 'X':
|
case 'X':
|
||||||
config._d = new Date(parseFloat(input) * 1000);
|
config._d = new Date(parseFloat(input) * 1000);
|
||||||
|
@ -1359,12 +1400,25 @@
|
||||||
config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
|
config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for 24:00:00.000
|
||||||
|
if (config._a[HOUR] === 24 &&
|
||||||
|
config._a[MINUTE] === 0 &&
|
||||||
|
config._a[SECOND] === 0 &&
|
||||||
|
config._a[MILLISECOND] === 0) {
|
||||||
|
config._nextDay = true;
|
||||||
|
config._a[HOUR] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
|
config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
|
||||||
// Apply timezone offset from input. The actual zone can be changed
|
// Apply timezone offset from input. The actual zone can be changed
|
||||||
// with parseZone.
|
// with parseZone.
|
||||||
if (config._tzm != null) {
|
if (config._tzm != null) {
|
||||||
config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
|
config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config._nextDay) {
|
||||||
|
config._a[HOUR] = 24;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function dateFromObject(config) {
|
function dateFromObject(config) {
|
||||||
|
@ -1378,7 +1432,7 @@
|
||||||
config._a = [
|
config._a = [
|
||||||
normalizedInput.year,
|
normalizedInput.year,
|
||||||
normalizedInput.month,
|
normalizedInput.month,
|
||||||
normalizedInput.day,
|
normalizedInput.day || normalizedInput.date,
|
||||||
normalizedInput.hour,
|
normalizedInput.hour,
|
||||||
normalizedInput.minute,
|
normalizedInput.minute,
|
||||||
normalizedInput.second,
|
normalizedInput.second,
|
||||||
|
@ -1451,6 +1505,10 @@
|
||||||
config._pf.unusedInput.push(string);
|
config._pf.unusedInput.push(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// clear _12h flag if hour is <= 12
|
||||||
|
if (config._pf.bigHour === true && config._a[HOUR] <= 12) {
|
||||||
|
config._pf.bigHour = undefined;
|
||||||
|
}
|
||||||
// handle am pm
|
// handle am pm
|
||||||
if (config._isPm && config._a[HOUR] < 12) {
|
if (config._isPm && config._a[HOUR] < 12) {
|
||||||
config._a[HOUR] += 12;
|
config._a[HOUR] += 12;
|
||||||
|
@ -1459,7 +1517,6 @@
|
||||||
if (config._isPm === false && config._a[HOUR] === 12) {
|
if (config._isPm === false && config._a[HOUR] === 12) {
|
||||||
config._a[HOUR] = 0;
|
config._a[HOUR] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dateFromConfig(config);
|
dateFromConfig(config);
|
||||||
checkOverflow(config);
|
checkOverflow(config);
|
||||||
}
|
}
|
||||||
|
@ -1719,7 +1776,8 @@
|
||||||
|
|
||||||
function makeMoment(config) {
|
function makeMoment(config) {
|
||||||
var input = config._i,
|
var input = config._i,
|
||||||
format = config._f;
|
format = config._f,
|
||||||
|
res;
|
||||||
|
|
||||||
config._locale = config._locale || moment.localeData(config._l);
|
config._locale = config._locale || moment.localeData(config._l);
|
||||||
|
|
||||||
|
@ -1743,7 +1801,14 @@
|
||||||
makeDateFromInput(config);
|
makeDateFromInput(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Moment(config);
|
res = new Moment(config);
|
||||||
|
if (res._nextDay) {
|
||||||
|
// Adding is smart enough around DST
|
||||||
|
res.add(1, 'd');
|
||||||
|
res._nextDay = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
moment = function (input, format, locale, strict) {
|
moment = function (input, format, locale, strict) {
|
||||||
|
@ -1775,7 +1840,7 @@
|
||||||
'release. Please refer to ' +
|
'release. Please refer to ' +
|
||||||
'https://github.com/moment/moment/issues/1407 for more info.',
|
'https://github.com/moment/moment/issues/1407 for more info.',
|
||||||
function (config) {
|
function (config) {
|
||||||
config._d = new Date(config._i);
|
config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -2087,7 +2152,12 @@
|
||||||
toISOString : function () {
|
toISOString : function () {
|
||||||
var m = moment(this).utc();
|
var m = moment(this).utc();
|
||||||
if (0 < m.year() && m.year() <= 9999) {
|
if (0 < m.year() && m.year() <= 9999) {
|
||||||
return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
if ('function' === typeof Date.prototype.toISOString) {
|
||||||
|
// native implementation is ~50x faster, use it when we can
|
||||||
|
return this.toDate().toISOString();
|
||||||
|
} else {
|
||||||
|
return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
|
||||||
}
|
}
|
||||||
|
@ -2206,7 +2276,7 @@
|
||||||
diff < 1 ? 'sameDay' :
|
diff < 1 ? 'sameDay' :
|
||||||
diff < 2 ? 'nextDay' :
|
diff < 2 ? 'nextDay' :
|
||||||
diff < 7 ? 'nextWeek' : 'sameElse';
|
diff < 7 ? 'nextWeek' : 'sameElse';
|
||||||
return this.format(this.localeData().calendar(format, this));
|
return this.format(this.localeData().calendar(format, this, moment(now)));
|
||||||
},
|
},
|
||||||
|
|
||||||
isLeapYear : function () {
|
isLeapYear : function () {
|
||||||
|
@ -2275,36 +2345,45 @@
|
||||||
|
|
||||||
endOf: function (units) {
|
endOf: function (units) {
|
||||||
units = normalizeUnits(units);
|
units = normalizeUnits(units);
|
||||||
|
if (units === undefined || units === 'millisecond') {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
|
return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
|
||||||
},
|
},
|
||||||
|
|
||||||
isAfter: function (input, units) {
|
isAfter: function (input, units) {
|
||||||
|
var inputMs;
|
||||||
units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
|
units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
|
||||||
if (units === 'millisecond') {
|
if (units === 'millisecond') {
|
||||||
input = moment.isMoment(input) ? input : moment(input);
|
input = moment.isMoment(input) ? input : moment(input);
|
||||||
return +this > +input;
|
return +this > +input;
|
||||||
} else {
|
} else {
|
||||||
return +this.clone().startOf(units) > +moment(input).startOf(units);
|
inputMs = moment.isMoment(input) ? +input : +moment(input);
|
||||||
|
return inputMs < +this.clone().startOf(units);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
isBefore: function (input, units) {
|
isBefore: function (input, units) {
|
||||||
|
var inputMs;
|
||||||
units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
|
units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
|
||||||
if (units === 'millisecond') {
|
if (units === 'millisecond') {
|
||||||
input = moment.isMoment(input) ? input : moment(input);
|
input = moment.isMoment(input) ? input : moment(input);
|
||||||
return +this < +input;
|
return +this < +input;
|
||||||
} else {
|
} else {
|
||||||
return +this.clone().startOf(units) < +moment(input).startOf(units);
|
inputMs = moment.isMoment(input) ? +input : +moment(input);
|
||||||
|
return +this.clone().endOf(units) < inputMs;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
isSame: function (input, units) {
|
isSame: function (input, units) {
|
||||||
|
var inputMs;
|
||||||
units = normalizeUnits(units || 'millisecond');
|
units = normalizeUnits(units || 'millisecond');
|
||||||
if (units === 'millisecond') {
|
if (units === 'millisecond') {
|
||||||
input = moment.isMoment(input) ? input : moment(input);
|
input = moment.isMoment(input) ? input : moment(input);
|
||||||
return +this === +input;
|
return +this === +input;
|
||||||
} else {
|
} else {
|
||||||
return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
|
inputMs = +moment(input);
|
||||||
|
return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -2481,7 +2560,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
lang : deprecate(
|
lang : deprecate(
|
||||||
'moment().lang() is deprecated. Use moment().localeData() instead.',
|
'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
|
||||||
function (key) {
|
function (key) {
|
||||||
if (key === undefined) {
|
if (key === undefined) {
|
||||||
return this.localeData();
|
return this.localeData();
|
||||||
|
@ -2702,7 +2781,7 @@
|
||||||
return units === 'month' ? months : months / 12;
|
return units === 'month' ? months : months / 12;
|
||||||
} else {
|
} else {
|
||||||
// handle milliseconds separately because of floating point math errors (issue #1867)
|
// handle milliseconds separately because of floating point math errors (issue #1867)
|
||||||
days = this._days + yearsToDays(this._months / 12);
|
days = this._days + Math.round(yearsToDays(this._months / 12));
|
||||||
switch (units) {
|
switch (units) {
|
||||||
case 'week': return days / 7 + this._milliseconds / 6048e5;
|
case 'week': return days / 7 + this._milliseconds / 6048e5;
|
||||||
case 'day': return days + this._milliseconds / 864e5;
|
case 'day': return days + this._milliseconds / 864e5;
|
||||||
|
@ -2804,6 +2883,7 @@
|
||||||
|
|
||||||
// Set default locale, other locale will inherit from English.
|
// Set default locale, other locale will inherit from English.
|
||||||
moment.locale('en', {
|
moment.locale('en', {
|
||||||
|
ordinalParse: /\d{1,2}(th|st|nd|rd)/,
|
||||||
ordinal : function (number) {
|
ordinal : function (number) {
|
||||||
var b = number % 10,
|
var b = number % 10,
|
||||||
output = (toInt(number % 100 / 10) === 1) ? 'th' :
|
output = (toInt(number % 100 / 10) === 1) ? 'th' :
|
||||||
|
|
Loading…
Reference in a new issue