From b0a4d5a84a64cc887f80213fb8a2f68fc107c324 Mon Sep 17 00:00:00 2001 From: Alexandr Nikitin Date: Tue, 3 Mar 2015 12:26:23 +0200 Subject: [PATCH] Fix conversion of date to UTC Method based on one of SO answers: http://stackoverflow.com/questions/948532/how-do-you-convert-a-javascript-date-to-utc --- strftime.js | 14 ++++++++++---- test/test.js | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/strftime.js b/strftime.js index cdc5d45..6845863 100644 --- a/strftime.js +++ b/strftime.js @@ -279,10 +279,16 @@ }); } - function dateToUTC(d) { - var msDelta = (d.getTimezoneOffset() || 0) * 60000; - return new Date(d.getTime() + msDelta); - } + function dateToUTC(d) { + return new Date( + d.getUTCFullYear(), + d.getUTCMonth(), + d.getUTCDate(), + d.getUTCHours(), + d.getUTCMinutes(), + d.getUTCSeconds(), + d.getUTCMilliseconds()); + } var RequiredDateMethods = ['getTime', 'getTimezoneOffset', 'getDay', 'getDate', 'getMonth', 'getFullYear', 'getYear', 'getHours', 'getMinutes', 'getSeconds']; function quacksLikeDate(x) { diff --git a/test/test.js b/test/test.js index 48572cd..e2f2ec3 100755 --- a/test/test.js +++ b/test/test.js @@ -104,6 +104,7 @@ assert.format('%y', '11') assert.format('%Z', null, 'GMT') assert.format('%z', null, '+0000') assert.format('%%', '%') // any other char +assert.format('%F %T', null, '1970-01-01 00:00:00', new Date(0)) ok('GMT')