A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/globalizejs/globalize/issues/689 below:

parseDate is an hour off with DST date · Issue #689 · globalizejs/globalize · GitHub

Hi @rxaviers, parseDate appears to have a bug in parsing a DST date.

My environment:

Here's a Node script that demonstrates the problem. Note that the summer date is 5:32am PDT, but after globalize parse it's 4:32am PDT:

var Globalize = require("globalize");

Globalize.load(
    require("cldr-data/main/en/ca-gregorian"),
    require("cldr-data/main/en/dateFields"),
    require("cldr-data/main/en/timeZoneNames"),
    require("cldr-data/main/en/numbers"),
    require("cldr-data/supplemental/likelySubtags"),
    require("cldr-data/supplemental/timeData"),
    require("cldr-data/supplemental/weekData")
);

Globalize.locale("en");

var winterDateISO = "2015-01-26T01:02:03.000Z";
var winterDate = new Date(winterDateISO); // Sun Jan 25 2015 17:02:03 GMT-0800 (PST)

var summerDateISO = "2015-06-01T12:32:46.000Z";
var summerDate = new Date(summerDateISO); // Mon Jun 01 2015 05:32:46 GMT-0700 (PDT)

var options = { datetime: "full" };

var winterDateFormatted = Globalize.formatDate(winterDate, options);
console.log("Winter Formatted:", winterDateFormatted); // "Sunday, January 25, 2015 at 5:02:03 PM GMT-08:00"
var winterDateParsed = Globalize.parseDate(winterDateFormatted, options);
console.log("Winter Parsed:", winterDateParsed); // Sun Jan 25 2015 17:02:03 GMT-0800 (PST)
console.log("Dates Match:", winterDate.getTime() === winterDateParsed.getTime()); // true

console.log();

var summerDateFormatted = Globalize.formatDate(summerDate, options);
console.log("Summer Formatted:", summerDateFormatted); // "Monday, June 1, 2015 at 5:32:46 AM GMT-07:00"
var summerDateParsed = Globalize.parseDate(summerDateFormatted, options);
console.log("Summer Parsed:", summerDateParsed); // Mon Jun 01 2015 04:32:46 GMT-0700 (PDT) (!!! One hour earlier)
console.log("Dates Match:", summerDate.getTime() === summerDateParsed.getTime()); // false

Output:

Winter Formatted: Sunday, January 25, 2015 at 5:02:03 PM GMT-08:00
Winter Parsed: Sun Jan 25 2015 17:02:03 GMT-0800 (PST)
Dates Match: true

Summer Formatted: Monday, June 1, 2015 at 5:32:46 AM GMT-07:00
Summer Parsed: Mon Jun 01 2015 04:32:46 GMT-0700 (PDT)
Dates Match: false

I have a hunch that if this were summer right now, it would be the winterDate failing. 😄


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4