Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Problems with the date 20 October in some years

I wrote some code in Javascript that was working without any problem. But when I put the date October 20, 2013, I was returned the date October 19, 2013.

The same applies to the years 2019, 2024 and 2030 (not tested previous years and not later).

This problem shows up in all browsers I test (Google Chrome, Internet Explorer, Mozilla Firefox, Opera and Safari).

When I write:

date = new Date("10/20/2013");
document.write(date);

The result I get is:

Sat Oct 19 2013 23:00:00 GMT-0300 (BRT)


Someone could tell me why this is happening and how can I solve this problem?

like image 538
Júlio Pradera Avatar asked May 22 '13 18:05

Júlio Pradera


1 Answers

October 20th, 2013 is the cutover for BRST. So if you are in Brazil (in a BRST timezone) you will transition from BRT (UTC -3) to BRST (UTC-2).

From TimeAndDate.com:

Current time in São Paulo: Wednesday, May 22, 2013 at 3:19:14 PM BRT

São Paulo will stay on BRT until Sunday, October 20, 2013 going to BRST

The transition happens at Midnight and Midnight to 1am is skipped. To guarantee a time on that date you can try:

date = new Date("10/20/2013 01:00:00");

And you should get 10/20/2013 01:00:00 with BRST as the timezone designation.

For someone in a US timezone that participates in DST who wants to see this issue; Use the US daylight savings time transition point of March 10th 2013, where 2am is skipped ahead to 3am:

var d = new Date("03/10/2013 02:59:59")
alert(d);   // Returns 1:59:59 AM in the Standard Time Zone

var d = new Date("03/10/2013 03:00:00")
alert(d);   // Returns 3:00:00 AM in the Daylight Time Zone
like image 163
John Koerner Avatar answered Nov 01 '22 23:11

John Koerner