Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Format a date in Javascript without converting to local timezone

In an SQL database I have a list of times from different time zones but I neither have nor care for the corresponding time zone information:

2012-01-01 01:02:03
2012-07-01 04:05:06

For outputting I'd like to format them using Javascript. I tried:

var text = input.replace(' ','T'); // SQL -> ISO8601
var d = new Date(Date.parse(text));
hours = d.getHours();

The problem is that in Chrome the the date is interpreted as being in UTC and converted to my local time zone, so I get:

2
6

while in Firefox it's interpreted as local time and I get what I want:

1
4

So is there a better solution with the Date object or am I stuck with splitting the string?

like image 601
AndreKR Avatar asked Aug 22 '12 15:08

AndreKR


1 Answers

The only solution I found is replacing - with /:

input = "2012-01-01 01:02:03";
var text = input.replace('-', '/');
var d = new Date(Date.parse(text));
hours = d.getHours();

In my case the input was 2013-05-22T16:45:00Z so I replaced T and Z as well:

input = "2013-05-22T16:45:00Z";
var text = input.replace(/[TZ]/, '').replace('-', '/');
var d = new Date(Date.parse(text));
hours = d.getHours();

That way Javascript deals with it without knowing anything about timezone and stop acting smartly.

like image 101
Bishoy Hanna Avatar answered Nov 07 '22 00:11

Bishoy Hanna