10-09-2019 11:13 AM
I need to pull data from an API that needs a timestamp as a parameter. This API retrieves data from a system (not in my control) that is based in the America/Las_Angeles timezone. I have tried for hours to find a way to generate a non-UTC Date object (LocalDateTime object doesn’t contain a getTime() method) so that I can call .getTime() but I seem to only be able to get a string value of the converted UTC Date into my desired timezone.
I tried to find a way to use the getTimezoneOffset() function, but I need a non-UTC Date object in order to get the valid offset from so I’m back to square one.
Can anyone provide an example of creating a Date object in Snap with a non-UTC timezone that I can call getTime()? (I just need to generate a timestamp based on a PST Date with a 00:00:00 time)
I tried creating the converted string (which I can’t get to include the timezone, because even though the docs point to SimpleDateFormat (Java Platform SE 7 ) as a reference I cannot get the value output for any of the time zone components) and appending ’ PST’ but it still created a UTC Date.
I have spent way too long trying to do something so simple that is a couple lines of code in almost any language and needs some guidance lol.
10-14-2019 11:17 AM
Date.now().toLocaleDateString({"timeZone":"America/Los_Angeles", "format":"yyyy-MM-dd"}) + " 00:00:00"
It will “handle” whether it’s currently PDT or PST.
10-14-2019 11:51 AM
That will get you a date-time string not a timestamp. How do you turn that into a timestamp?
10-14-2019 12:19 PM
Date.parse(Date.now().toLocaleDateString({"timeZone":"America/Los_Angeles"})).getTime()
10-14-2019 12:44 PM
So that is the first thing I tried, but it gives me a UTC DateTime object at 00:00:00 for the Date, and calls getTime() on it. You cannot call getTime() without the Date.parse() which turns it into a UTC timezone because toLocalDateString() and toLocalDateTimeString() both return a datetime string WITHOUT the timezone or offset. Even though the snaplogic documentation says you can provide a ‘x’ or a ‘z’ in the ‘format’ parameter the result doesn’t contain any timestamp information for Date.parse() to understand. I even tried appending the timezone information to what is passed into the Date.parse() with no luck.
This will result in a UTC Y-m-d 00:00:00 timestamp.
I need a America/Los_Angeles Y-m-d 00:00:00 timestamp. If I used the above, I will be off by whatever the offset is in the America/Los_Angeles timezone.
01-07-2021 01:47 PM
I’m running into this problem as well. I need to convert a value obtained from toLocaleDateTimeString() back to a SnapLogic date object in its current timezone, but there doesn’t seem to be any way to maintain or set the timezone when parsing back to a date object. It always reverts to UTC as the timezone, though with the “correct” time from the original timezone. This is really unfortunate.
Does anyone know how to create a new date object (not derived from a datasource with a non-UTC timezone) that is not in UTC time?