// MONTH
case 'M' : // fall through to MM
case 'MM' :
- datePartArray[1] = ~~input - 1;
+ datePartArray[1] = (input == null) ? 0 : ~~input - 1;
break;
case 'MMM' : // fall through to MMMM
case 'MMMM' :
i, parsedInput;
for (i = 0; i < tokens.length; i++) {
- parsedInput = (getParseRegexForToken(tokens[i]).exec(string) || [0])[0];
+ parsedInput = (getParseRegexForToken(tokens[i]).exec(string) || [])[0];
string = string.replace(getParseRegexForToken(tokens[i]), '');
addTimeToArrayFromToken(tokens[i], parsedInput, datePartArray, config);
}
// date from string and array of format strings
function makeDateFromStringAndArray(string, formats) {
var output,
- inputParts = string.match(parseMultipleFormatChunker),
+ inputParts = string.match(parseMultipleFormatChunker) || [],
formattedInputParts,
scoreToBeat = 99,
i,
currentScore;
for (i = 0; i < formats.length; i++) {
currentDate = makeDateFromStringAndFormat(string, formats[i]);
- formattedInputParts = formatMoment(new Moment(currentDate), formats[i]).match(parseMultipleFormatChunker);
+ formattedInputParts = formatMoment(new Moment(currentDate), formats[i]).match(parseMultipleFormatChunker) || [];
currentScore = compareArrays(inputParts, formattedInputParts);
if (currentScore < scoreToBeat) {
scoreToBeat = currentScore;
test.done();
},
+ "empty string with formats" : function(test) {
+ test.expect(3);
+
+ test.equal(moment(' ', 'MM').format('YYYY-MM-DD HH:mm:ss'), '1900-01-01 00:00:00', 'should not break if input is an empty string');
+ test.equal(moment(' ', 'DD').format('YYYY-MM-DD HH:mm:ss'), '1900-01-01 00:00:00', 'should not break if input is an empty string');
+ test.equal(moment(' ', ['MM', "DD"]).format('YYYY-MM-DD HH:mm:ss'), '1900-01-01 00:00:00', 'should not break if input is an empty string');
+
+ test.done();
+ },
+
"string with format" : function(test) {
moment.lang('en');
var a = [