Home > database >  Google apps script keep considering my calculation as string, how to fix it?
Google apps script keep considering my calculation as string, how to fix it?

Time:09-08

I got a code like this:

  var date = new Date(new Date()   dateAdjust*3600*1000 );

However, the result came out weird. But if I change the plus sign to a minus sign, and make the dateAdjust become negative, it results right. I think it considers dateAdjust36001000 as a string. How do I fix that? I heard some people say to use parseInt(), but it doesn't work either.

  var date = new Date(new Date()   parseInt(dateAdjust*3600*1000) );

CodePudding user response:

Please bear in mind that JavaScript operators doesn't work exactly as Google Sheets operators (mentioned because the question includes the google-sheets tag).

The fix might be to use new Date().getTime() or new Date().toValue(). This will return the date-time in milliseconds since January 1, 1970 00:00:00 UTC. Assuming that dateAjust has assigned a number, then the final code might be:

  var date = new Date(new Date().getTime()   dateAdjust * 3600 * 1000 );

Explanation

In JavaScript, when using having a Date object to the left, due to JavaScript rules, it's converted into a string. This happens because in JavaScript the could make two possible operations, mathematical addition and string concatenation while - operator is only able to do a mathematical subtraction. This is a operation called type coercion.

Having a string to the left of , makes the right operand to be converted into a string too.

Related

  • Related