From 3aedebb0b00b5bf238e94dfc6c9724210cccead2 Mon Sep 17 00:00:00 2001 From: Candid Dauth Date: Thu, 11 Apr 2013 01:11:08 +0200 Subject: [PATCH] Fixing parsing of timestamps without timezone in binary mode --- lib/types/binaryParsers.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/types/binaryParsers.js b/lib/types/binaryParsers.js index 7f0a89c6..ca55cc4e 100644 --- a/lib/types/binaryParsers.js +++ b/lib/types/binaryParsers.js @@ -141,13 +141,17 @@ var parseNumeric = function(value) { return ((sign === 0) ? 1 : -1) * Math.round(result * scale) / scale; }; -var parseDate = function(value) { +var parseDate = function(isUTC, value) { var sign = parseBits(value, 1); var rawValue = parseBits(value, 63, 1); // discard usecs and shift from 2000 to 1970 var result = new Date((((sign === 0) ? 1 : -1) * rawValue / 1000) + 946684800000); + if (!isUTC) { + result.setTime(result.getTime() + result.getTimezoneOffset() * 60000); + } + // add microseconds to the date result.usec = rawValue % 1000; result.getMicroSeconds = function() { @@ -247,8 +251,8 @@ var init = function(register) { register(700, parseFloat32); register(701, parseFloat64); register(16, parseBool); - register(1114, parseDate); - register(1184, parseDate); + register(1114, parseDate.bind(null, false)); + register(1184, parseDate.bind(null, true)); register(1007, parseArray); register(1016, parseArray); register(1008, parseArray);