From 314603eefee669c55303f37f9ef170df15d640a4 Mon Sep 17 00:00:00 2001 From: Andrew Schaaf Date: Tue, 7 Jun 2011 15:22:00 -0400 Subject: [PATCH] fix strftimeUTC("%s") (closes #7) --- lib/index.js | 6 ++++-- test/test.coffee | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/index.js b/lib/index.js index 347d2fa..9c2c172 100644 --- a/lib/index.js +++ b/lib/index.js @@ -86,8 +86,10 @@ d = d || new Date(); locale = locale || DefaultLocale; locale.formats = locale.formats || {} + var msDelta = 0; if (_useUTC) { - d = new Date(d.getTime() + ((d.getTimezoneOffset() || 0) * 60000)); + msDelta = (d.getTimezoneOffset() || 0) * 60000; + d = new Date(d.getTime() + msDelta); } // Most of the specifiers supported by C's strftime @@ -113,7 +115,7 @@ case 'R': return strftime(locale.formats.R || '%H:%M', d, locale); case 'r': return strftime(locale.formats.r || '%I:%M:%S %p', d, locale); case 'S': return pad(d.getSeconds()); - case 's': return Math.floor(d.getTime() / 1000); + case 's': return Math.floor((d.getTime() - msDelta) / 1000); case 'L': return pad3(Math.floor(d.getTime() % 1000)); case 'T': return strftime(locale.formats.T || '%H:%M:%S', d, locale); case 't': return '\t'; diff --git a/test/test.coffee b/test/test.coffee index 9ab9f0e..aaed772 100644 --- a/test/test.coffee +++ b/test/test.coffee @@ -36,3 +36,4 @@ for [format, expectedNonUTC, expectedUTC] in TESTS got = lib[name] format, t assert.equal expected, got, "Error for #{name}(#{JSON.stringify(format)}, t): expected #{JSON.stringify(expected)}, got #{JSON.stringify(got)}" +console.log "OK"