paramsToParse = 'months|monthsShort|monthsParse|weekdays|weekdaysShort|longDateFormat|calendar|relativeTime|ordinal|meridiem'.split('|'),
i,
jsonRegex = /^\/?Date\((\-?\d+)/i,
- charactersToReplace = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|dddd?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|zz?|ZZ?|LT|LL?L?L?)/g,
+ charactersToReplace = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|dddd?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|zz?|ZZ?|LT|LL?L?L?)/g,
nonuppercaseLetters = /[^A-Z]/g,
timezoneRegex = /\([A-Za-z ]+\)|:[0-9]{2} [A-Z]{3} /g,
tokenCharacters = /(\\)?(MM?M?M?|dd?d?d|DD?D?D?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|ZZ?|T)/g,
currentMinutes = m.minutes(),
currentSeconds = m.seconds(),
currentZone = -m.zone(),
+ currentMilliseconds = m.milliseconds(),
ordinal = moment.ordinal,
meridiem = moment.meridiem;
// check if the character is a format
return currentSeconds;
case 'ss' :
return leftZeroFill(currentSeconds, 2);
+ case 'S' :
+ return ~~ (currentMilliseconds / 100);
+ case 'SS' :
+ return leftZeroFill(~~(currentMilliseconds / 10), 2);
+ case 'SSS' :
+ return leftZeroFill(currentMilliseconds, 3);
// TIMEZONE
case 'zz' :
// depreciating 'zz' fall through to 'z'
test.done();
},
+ "format milliseconds" : function(test) {
+ test.expect(6);
+ var b = moment(new Date(2009, 1, 14, 15, 25, 50, 123));
+ test.equal(b.format('S'), '1', 'Deciseconds');
+ test.equal(b.format('SS'), '12', 'Centiseconds');
+ test.equal(b.format('SSS'), '123', 'Milliseconds');
+ b.milliseconds(789);
+ test.equal(b.format('S'), '7', 'Deciseconds');
+ test.equal(b.format('SS'), '78', 'Centiseconds');
+ test.equal(b.format('SSS'), '789', 'Milliseconds');
+ test.done();
+ },
+
"format timezone" : function(test) {
test.expect(4);