|
import { makeGetSet } from '../moment/get-set'; |
|
import { addFormatToken } from '../format/format'; |
|
import { addUnitAlias } from './aliases'; |
|
import { addUnitPriority } from './priorities'; |
|
import { addRegexToken, match1to2, match2, match3to4, match5to6 } from '../parse/regex'; |
|
import { addParseToken } from '../parse/token'; |
|
import { HOUR, MINUTE, SECOND } from './constants'; |
|
import toInt from '../utils/to-int'; |
|
import zeroFill from '../utils/zero-fill'; |
|
import getParsingFlags from '../create/parsing-flags'; |
|
|
|
|
|
|
|
function hFormat() { |
|
return this.hours() % 12 || 12; |
|
} |
|
|
|
function kFormat() { |
|
return this.hours() || 24; |
|
} |
|
|
|
addFormatToken('H', ['HH', 2], 0, 'hour'); |
|
addFormatToken('h', ['hh', 2], 0, hFormat); |
|
addFormatToken('k', ['kk', 2], 0, kFormat); |
|
|
|
addFormatToken('hmm', 0, 0, function () { |
|
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); |
|
}); |
|
|
|
addFormatToken('hmmss', 0, 0, function () { |
|
return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + |
|
zeroFill(this.seconds(), 2); |
|
}); |
|
|
|
addFormatToken('Hmm', 0, 0, function () { |
|
return '' + this.hours() + zeroFill(this.minutes(), 2); |
|
}); |
|
|
|
addFormatToken('Hmmss', 0, 0, function () { |
|
return '' + this.hours() + zeroFill(this.minutes(), 2) + |
|
zeroFill(this.seconds(), 2); |
|
}); |
|
|
|
function meridiem (token, lowercase) { |
|
addFormatToken(token, 0, 0, function () { |
|
return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); |
|
}); |
|
} |
|
|
|
meridiem('a', true); |
|
meridiem('A', false); |
|
|
|
|
|
|
|
addUnitAlias('hour', 'h'); |
|
|
|
|
|
addUnitPriority('hour', 13); |
|
|
|
|
|
|
|
function matchMeridiem (isStrict, locale) { |
|
return locale._meridiemParse; |
|
} |
|
|
|
addRegexToken('a', matchMeridiem); |
|
addRegexToken('A', matchMeridiem); |
|
addRegexToken('H', match1to2); |
|
addRegexToken('h', match1to2); |
|
addRegexToken('k', match1to2); |
|
addRegexToken('HH', match1to2, match2); |
|
addRegexToken('hh', match1to2, match2); |
|
addRegexToken('kk', match1to2, match2); |
|
|
|
addRegexToken('hmm', match3to4); |
|
addRegexToken('hmmss', match5to6); |
|
addRegexToken('Hmm', match3to4); |
|
addRegexToken('Hmmss', match5to6); |
|
|
|
addParseToken(['H', 'HH'], HOUR); |
|
addParseToken(['k', 'kk'], function (input, array, config) { |
|
var kInput = toInt(input); |
|
array[HOUR] = kInput === 24 ? 0 : kInput; |
|
}); |
|
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; |
|
}); |
|
addParseToken('hmm', function (input, array, config) { |
|
var pos = input.length - 2; |
|
array[HOUR] = toInt(input.substr(0, pos)); |
|
array[MINUTE] = toInt(input.substr(pos)); |
|
getParsingFlags(config).bigHour = true; |
|
}); |
|
addParseToken('hmmss', function (input, array, config) { |
|
var pos1 = input.length - 4; |
|
var pos2 = input.length - 2; |
|
array[HOUR] = toInt(input.substr(0, pos1)); |
|
array[MINUTE] = toInt(input.substr(pos1, 2)); |
|
array[SECOND] = toInt(input.substr(pos2)); |
|
getParsingFlags(config).bigHour = true; |
|
}); |
|
addParseToken('Hmm', function (input, array, config) { |
|
var pos = input.length - 2; |
|
array[HOUR] = toInt(input.substr(0, pos)); |
|
array[MINUTE] = toInt(input.substr(pos)); |
|
}); |
|
addParseToken('Hmmss', function (input, array, config) { |
|
var pos1 = input.length - 4; |
|
var pos2 = input.length - 2; |
|
array[HOUR] = toInt(input.substr(0, pos1)); |
|
array[MINUTE] = toInt(input.substr(pos1, 2)); |
|
array[SECOND] = toInt(input.substr(pos2)); |
|
}); |
|
|
|
|
|
|
|
export function localeIsPM (input) { |
|
|
|
|
|
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'; |
|
} |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export var getSetHour = makeGetSet('Hours', true); |
|
|