From: Tim Wood Date: Fri, 23 Mar 2012 19:08:41 +0000 (-0700) Subject: Adding support for formatting milliseconds X-Git-Tag: 1.5.1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d8bac907922e89e664ef33b6bc8597ff7c431bb;p=thirdparty%2Fmoment.git Adding support for formatting milliseconds #214 --- diff --git a/moment.js b/moment.js index 3f0d671c9..5f0d6767a 100644 --- a/moment.js +++ b/moment.js @@ -13,7 +13,7 @@ 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, @@ -99,6 +99,7 @@ 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 @@ -188,6 +189,12 @@ 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' diff --git a/test/moment/format.js b/test/moment/format.js index 359626713..744d2197b 100644 --- a/test/moment/format.js +++ b/test/moment/format.js @@ -21,6 +21,19 @@ exports.format = { 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);