From b5d0067e023335aee427552aea0f8accb1d45b46 Mon Sep 17 00:00:00 2001 From: Jay Merrifield Date: Sat, 14 May 2011 18:20:06 -0400 Subject: [PATCH] Fixes ticket 6827, made the day of year calculator be more accurate by creating a date object starting at the beginning of the day being formatted, and rounding the end result when to make certain we're handling any DST weirdness --- tests/unit/datepicker/datepicker_tickets.js | 5 +++++ ui/jquery.ui.datepicker.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/unit/datepicker/datepicker_tickets.js b/tests/unit/datepicker/datepicker_tickets.js index 7e6dc5f0009..2b9ce05de68 100644 --- a/tests/unit/datepicker/datepicker_tickets.js +++ b/tests/unit/datepicker/datepicker_tickets.js @@ -24,4 +24,9 @@ test('beforeShowDay-getDate', function() { inp.datepicker('hide'); }); +test('Ticket 6827: formatDate day of year calculation is wrong during day lights savings time', function(){ + var time = $.datepicker.formatDate("oo", new Date("2010/03/30 12:00:00 CDT")); + equals(time, "089"); +}); + })(jQuery); diff --git a/ui/jquery.ui.datepicker.js b/ui/jquery.ui.datepicker.js index 5b1dad68472..519d4dfdb79 100644 --- a/ui/jquery.ui.datepicker.js +++ b/ui/jquery.ui.datepicker.js @@ -1185,7 +1185,7 @@ $.extend(Datepicker.prototype, { break; case 'o': output += formatNumber('o', - (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3); + Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); break; case 'm': output += formatNumber('m', date.getMonth() + 1, 2);