Zoho Deluge - Compare time and currenttime with timezone

What?
This is a quick article to demonstrate how to compare two datetime values with the timezone specified.

Why?
A client's ZohoCRM had a different timezone setting than the user a script would be run as. The time difference was just one hour but this caused problems if comparing two datetime values. In this particular case, we needed to check on the expiry of an access token used in OAuth2.0 for an API.

How?
All with deluge but we will split the date and time value obtained from a CRM field and compare it to the current time combined with a timezone. In this particular case, we will switch the current time to Europe/London (You can use an abbreviation such as GMT but this doesn't seem to check if daylight savings is in effect):

Example of taking a CRM date-time value (expiryTime) and appending toTime() prematurely - DO NOT USE
v_CustomTime = "2020-03-25 20:41:07".toTime().toString("yyyy-MM-dd HH:mm:ss");
v_ExpiryTime = "2020-03-25T21:41:07+00:00";
info v_CustomTime.toTime();
info v_ExpiryTime.toTime();

// yields
// 25-Mar-2020 20:41:07
// 25-Mar-2020 00:00:00

Example of splitting date-time value and then comparing:
v_CustomTime = "2020-03-25 20:41:07".toTime().toString("yyyy-MM-dd HH:mm:ss");
v_ExpiryTime = "2020-03-25T21:41:07+00:00";
v_ExpiryDatePart = v_ExpiryTime.subString(0,10);
v_ExpiryTimePart = v_ExpiryTime.subString(11,19);
v_ExpiryTimeCheck = v_ExpiryDatePart + " " + v_ExpiryTimePart;
info v_CustomTime.toTime();
info v_ExpiryTimeCheck.toTime();

// yields
// 25-Mar-2020 20:41:07
// 25-Mar-2020 21:41:07

Setting a TimeZone to a value that is in Zoho date time format - DO NOT USE
v_CurrentTime = zoho.currenttime.toString("yyyy-MM-dd'T'HH:mm:ss", "Europe/London");
v_ExpiryTime = "2020-03-25T21:41:07+00:00";
v_ExpiryDatePart = v_ExpiryTime.subString(0,10);
v_ExpiryTimePart = v_ExpiryTime.subString(11,19);
v_ExpiryTimeCheck = v_ExpiryDatePart + " " + v_ExpiryTimePart;
info v_CurrentTime.toTime();
info v_ExpiryTimeCheck.toTime();

// yields
// 25-Mar-2020 00:00:00
// 25-Mar-2020 21:41:07

Setting a TimeZone and extracting the date and time
v_CurrentTime = zoho.currenttime.toString("yyyy-MM-dd'T'HH:mm:ss", "Europe/London");
v_CurrentDatePart = v_CurrentTime.subString(0,10);
v_CurrentTimePart = v_CurrentTime.subString(11,19);
v_CurrentTimeCheck = v_CurrentDatePart + " " + v_CurrentTimePart;
v_ExpiryTime = "2020-03-25T21:41:07+00:00";
v_ExpiryDatePart = v_ExpiryTime.subString(0,10);
v_ExpiryTimePart = v_ExpiryTime.subString(11,19);
v_ExpiryTimeCheck = v_ExpiryDatePart + " " + v_ExpiryTimePart;
info v_CurrentTimeCheck.toTime();
info v_ExpiryTimeCheck.toTime();

// yields
// 25-Mar-2020 20:41:07
// 25-Mar-2020 21:41:07

v_CompareResult = if(v_ExpiryTimeCheck.toTime() <= v_CurrentTimeCheck.toTime(), "Expired", "Valid");
info v_CompareResult;
// yields "Valid"

// or if comparing against current time anyway

v_CompareResult = if(v_ExpiryTimeCheck.toTime() <= zoho.currenttime, "Expired", "Valid");
info v_CompareResult;
// yields "Valid"


Error(s):
  • Operator <= is not valid for TEXT expression You are comparing to text values rather than two datetimes. Which is why we need the above to set the variables to the date-time datatype so it compares on time value rather than text.
  • Setting a timezone to the date/time returned by CRM would subtract or add hours depending on your location to our existing value. So we leave it alone as the CRM value is the value to compare.

Related Articles

Joes Revolver Map

Accreditation

Badge - Certified Zoho Creator Associate
Badge - Certified Zoho Creator Associate

Donate & Support

If you like my content, and would like to support this sharing site, feel free to donate using a method below:

Paypal:
Donate to Joel Lipman via PayPal

Bitcoin:
Donate to Joel Lipman with Bitcoin - Valid till 8 May 2022 3QnhmaBX7LQSRsC9hh6Je9rGQKEGNQNfPb
© 2021 Joel Lipman .com. All Rights Reserved.