aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
// format tokens
- formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|zz?|ZZ?)/g,
+ formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|zz?|ZZ?|.)/g,
- localFormattingTokens = /(LT|LL?L?L?)/g,
+ localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?)/g,
- formattingRemoveEscapes = /(^\[)|(\\)|\]$/g,
// parsing tokens
parseMultipleFormatChunker = /([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi,
// format date using native date object
function formatMoment(m, format) {
- var lang = getLangDefinition(m), i = 5;
-
- function getValueFromArray(key, index) {
- return lang[key].call ? lang[key](m, format) : lang[key][index];
- }
- while (localFormattingTokens.test(format)) {
++ var i = 5;
+
+ while (i-- && localFormattingTokens.test(format)) {
format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
}
for (i = 0; i < tokens.length; i++) {
parsedInput = (getParseRegexForToken(tokens[i]).exec(string) || [])[0];
- string = string.replace(getParseRegexForToken(tokens[i]), '');
- addTimeToArrayFromToken(tokens[i], parsedInput, datePartArray, config);
+ if (parsedInput) {
+ string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
++ }
++ // don't parse if its not a known token
++ if (formatTokenFunctions[tokens[i]]) {
+ addTimeToArrayFromToken(tokens[i], parsedInput, datePartArray, config);
- } else {
- addTimeToArrayFromToken(tokens[i], null, datePartArray, config);
+ }
}
// handle am pm
if (config.isPm && datePartArray[3] < 12) {