Print

Zoho Deluge: Convert Xero Date (Unix Timestamp) to Standard Date String

What?
So this is a super quick note that I'll probably remember anyway but just in case, I'm writing this article so I don't spend time researching it later.

Why?
I'm synchronizing Xero Invoices with Zoho CRM Invoices and noticed that Xero stores its dates in Unix Timestamps.

How?
We're going to filter out the unix seconds from the date provided by Xero then apply a toTime() function to it.
copyraw
v_XeroTime="/Date(1586995200000+0000)/";
v_StartIndex = v_XeroTime.indexOf("(")+1;
v_EndIndex = v_XeroTime.indexOf("+", v_StartIndex);
v_UnixSeconds = v_XeroTime.subString(v_StartIndex, v_EndIndex);

info v_UnixSeconds.toLong().toTime();
// yields 15-Apr-2020 17:00:00
  1.  v_XeroTime="/Date(1586995200000+0000)/"
  2.  v_StartIndex = v_XeroTime.indexOf("(")+1
  3.  v_EndIndex = v_XeroTime.indexOf("+", v_StartIndex)
  4.  v_UnixSeconds = v_XeroTime.subString(v_StartIndex, v_EndIndex)
  5.   
  6.  info v_UnixSeconds.toLong().toTime()
  7.  // yields 15-Apr-2020 17:00:00 

Chained
copyraw
v_XeroTime="/Date(1586995200000+0000)/";
v_ZohoTime = v_XeroTime.subString(v_XeroTime.indexOf("(")+1, v_XeroTime.indexOf("+")).toLong().toTime();
// yields 15-Apr-2020 17:00:00
  1.  v_XeroTime="/Date(1586995200000+0000)/"
  2.  v_ZohoTime = v_XeroTime.subString(v_XeroTime.indexOf("(")+1, v_XeroTime.indexOf("+")).toLong().toTime()
  3.  // yields 15-Apr-2020 17:00:00 

Using a regular expression
copyraw
v_XeroTime="/Date(1586995200000+0000)/";
v_ZohoTime = v_XeroTime.replaceAll("[^0-9]", " ", false).trim().toList(" ").get(0).toLong().toTime();
// yields 15-Apr-2020 17:00:00
  1.  v_XeroTime="/Date(1586995200000+0000)/"
  2.  v_ZohoTime = v_XeroTime.replaceAll("[^0-9]", " ", false).trim().toList(" ").get(0).toLong().toTime()
  3.  // yields 15-Apr-2020 17:00:00 

Additional
Source(s)
Category: Zoho :: Article: 720
, ,