diff --git a/src/jquery.format.js b/src/jquery.format.js index ca06ac4..cda8fbb 100644 --- a/src/jquery.format.js +++ b/src/jquery.format.js @@ -292,13 +292,15 @@ y = String(y + 1900); } + var ordinals = { 1: "st", 2: "nd", 3: "rd", 21: "st", 22: "nd", 23: "rd", 31: "st" }; var M = value.getMonth() + 1, d = value.getDate(), E = value.getDay(), H = value.getHours(), m = value.getMinutes(), s = value.getSeconds(), - S = value.getMilliseconds(); + S = value.getMilliseconds(), + o = ordinals[d] || "th"; value = { y: y, @@ -313,9 +315,11 @@ EEE: _locale.date.daysShort[E], EEEE: _locale.date.daysFull[E], H: H, - HH: formatNumber(H) + HH: formatNumber(H), + o: o, + O: o.toUpperCase() }; - + if (H === 0) { value.h = 12; } else if (H > 12) { diff --git a/test/test.js b/test/test.js index 265dae5..4267cd8 100644 --- a/test/test.js +++ b/test/test.js @@ -30,6 +30,46 @@ test("Basic requirements", function() { f = 'k:mm a'; equals($.format.date(d, f), '12:00 PM'); + d = new Date(); + d.setDate(1); + f = 'do dO'; + equals($.format.date(d, f), '1st 1ST'); + + d = new Date(); + d.setDate(2); + f = 'do dO'; + equals($.format.date(d, f), '2nd 2ND'); + + d = new Date(); + d.setDate(3); + f = 'do dO'; + equals($.format.date(d, f), '3rd 3RD'); + + d = new Date(); + d.setDate(4); + f = 'do dO'; + equals($.format.date(d, f), '4th 4TH'); + + d = new Date(); + d.setDate(21); + f = 'do dO'; + equals($.format.date(d, f), '21st 21ST'); + + d = new Date(); + d.setDate(22); + f = 'do dO'; + equals($.format.date(d, f), '22nd 22ND'); + + d = new Date(); + d.setDate(23); + f = 'do dO'; + equals($.format.date(d, f), '23rd 23RD'); + + d = new Date(); + d.setDate(31); + f = 'do dO'; + equals($.format.date(d, f), '31st 31ST'); + d = new Date(); d.setFullYear(2012); d.setMonth(1);