views:

89

answers:

4

Hi,

I am working with dates in an RSS feed, but am finding differing results when using the code below in IE, Chrome and Firefox:

new Date('2001-01-01T12:00:00Z')

Firefox is happy with that, but Chrome and IE return Invalid Date.

I thought I'd try replacing the T and Z as follows:

new Date('2001-01-01 12:00:00')

This time Chrome is happy with that, but Firefox and IE return Invalid Date.

Any ideas what I should do to get a date object in all browsers with this format?!

Many thanks, Tim

+1  A: 

Can you try:

new Date(2001,0,1,12,0,0)

This means:

new Date(year,month,day,hour,minutes,seconds) 
NicolasT
You meannew Date(2001,0,1,12,0,0)since JS months start with 0
mplungjan
I'll edit, you're right
NicolasT
Be careful with leading 0s. 08 and 09 are invalid octal numbers
mplungjan
+2  A: 

This works in all browsers on my box

javascript:alert(new Date('2001/01/31 12:00:00'))

so

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' '))

IE8, FF3.6, Safari4, Chrome

mplungjan
You're right, this works, and it's a better solution than mine.
NicolasT
Many thanks! Tested and working for me in IE, FF, Chrome and Opera!
TimS
You are welcome. Thank you for returning and accepting.
mplungjan
+1  A: 

You could also try using Date.js - an open source javascript date manipulation library.

theycallmemorty
Excellent suggestion! Thanks
TimS
+1  A: 

This works on all of the major 5 browsers and causes all browsers to recognize the time as GMT/UTC rather than local time (the Z suffix means the time is UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0'))

I thank mplungjan for his answer.

idealmachine