Search code examples
datetimegoogle-apps-scriptloggingdate-formatting

GAS function returns incorrect date - is it me or is it a defect?


Unless I use the .toLocaleDateString() method, the function below returns a date that is one day less than it should be. Am I doing something wrong or is this a defect?

    function myDate() {
  var sDate = '05/10/2012';
  var parts = sDate.split('/');
  var d = new Date( parts[2], parts[1]-1, parts[0]);
  Logger.log(d);
  Logger.log(d.toLocaleDateString());
};

The Logger returns:

Thu Oct 04 16:00:00 PDT 2012

05 October 2012 00:00:00 BST

I'm in the UK, hence the UK date format. I've checked that my project properties have the time zone set to "(GMT+00:00) London" so why does the Logger show the first date in PDT? Is that the reason for the wrong date? I've reproduced the problem in a stand-alone project. Here's a link to it.

I wanted to convert the string variable into a date object in order to do some date math so having to convert back to a string with .toLocaleDateString() method isn't helpful.

I've checked for consistence, thinking perhaps I could work around it, by testing with other dates. Bizarrely, if I change the value of sDate to anything between 01/01/2012 & 04/03/2012 it returns accurately. From 05/03/2012 onwards it drops a day. With 2013 dates, it returns correctly until 29/04/2013 when it starts dropping a day again. So it's not consistent. It seems similar to the problem reported here.


Solution

  • The logger always logs dates in PDT. It's the same instance of time, just represented a different way. You are seeing that + differences in daylight savings time.