import { makeGetSet } from '../moment/get-set';
|
import { addFormatToken } from '../format/format';
|
import { addUnitAlias } from './aliases';
|
import { addRegexToken, match1to2, match2 } from '../parse/regex';
|
import { addParseToken } from '../parse/token';
|
import { HOUR } from './constants';
|
import toInt from '../utils/to-int';
|
import getParsingFlags from '../create/parsing-flags';
|
|
// FORMATTING
|
|
addFormatToken('H', ['HH', 2], 0, 'hour');
|
addFormatToken('h', ['hh', 2], 0, function () {
|
return this.hours() % 12 || 12;
|
});
|
|
function meridiem (token, lowercase) {
|
addFormatToken(token, 0, 0, function () {
|
return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
|
});
|
}
|
|
meridiem('a', true);
|
meridiem('A', false);
|
|
// ALIASES
|
|
addUnitAlias('hour', 'h');
|
|
// PARSING
|
|
function matchMeridiem (isStrict, locale) {
|
return locale._meridiemParse;
|
}
|
|
addRegexToken('a', matchMeridiem);
|
addRegexToken('A', matchMeridiem);
|
addRegexToken('H', match1to2);
|
addRegexToken('h', match1to2);
|
addRegexToken('HH', match1to2, match2);
|
addRegexToken('hh', match1to2, match2);
|
|
addParseToken(['H', 'HH'], HOUR);
|
addParseToken(['a', 'A'], function (input, array, config) {
|
config._isPm = config._locale.isPM(input);
|
config._meridiem = input;
|
});
|
addParseToken(['h', 'hh'], function (input, array, config) {
|
array[HOUR] = toInt(input);
|
getParsingFlags(config).bigHour = true;
|
});
|
|
// LOCALES
|
|
export function localeIsPM (input) {
|
// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
|
// Using charAt should be more compatible.
|
return ((input + '').toLowerCase().charAt(0) === 'p');
|
}
|
|
export var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
|
export function localeMeridiem (hours, minutes, isLower) {
|
if (hours > 11) {
|
return isLower ? 'pm' : 'PM';
|
} else {
|
return isLower ? 'am' : 'AM';
|
}
|
}
|
|
|
// MOMENTS
|
|
// Setting the hour should keep the time, because the user explicitly
|
// specified which hour he wants. So trying to maintain the same hour (in
|
// a new timezone) makes sense. Adding/subtracting hours does not follow
|
// this rule.
|
export var getSetHour = makeGetSet('Hours', true);
|