I’m creating dates from strings with the format ‘yyyy-MM-dd’ but they’re always created on the previous day for some reason. If I set the date as ‘2012-10-31’ the Date object with actually be 30 of October and not 31. For example, this:
var d1=new Date('2012-10-31');
Will output this:
Tue Oct 30 2012 19:30:00 GMT-0430 (Venezuela Standard Time)
Can someone explain why this happens?
With no further parameters, Date() create your time-stamp with GMT+0000.
Converting your date to string with no further parameters either, it will use the localised notation.
If you want to create a date matching your time-zone, do:
Using this date now, you can convert the local time to the time of other timezones if you execute d1.toString() in a browser with a different timezone: