How to calculate the current UTC Time Zone from Navision?

There was a case where i need to get this kind of output hh:mm:ssZ where Z stands for UTC Time Zone (20:15:00+0200) to the external system for integration.

For Instance, the current time zone in the system is UTC +02:00 and we need to get this value (+0200) from Navision. There are no predefined functions to get this value so for that i have created a new function GetUTCOffset which can be used to get the UTC offset.

LOCAL PROCEDURE GetUTCOffset@5() : Text;

VAR

lLocalTime@1004 : Time;

lUTCTime@1000 : Time;

lDateTimeTxt@1003 : Text;

lTimeTxt@1001 : Text;

lTimeDiffTxt@1002 : Text;

lSign@1005 : Text;

BEGIN

//GetUTCOffset

EVALUATE(lLocalTime,’17:00′);

lDateTimeTxt := FORMAT(CREATEDATETIME(TODAY,lLocalTime),0,9);

lTimeTxt := COPYSTR(lDateTimeTxt,STRPOS(lDateTimeTxt,’T’) + 1);

lTimeTxt := COPYSTR(lTimeTxt,1,STRLEN(lTimeTxt) – 1);

EVALUATE(lUTCTime,lTimeTxt);

lTimeDiffTxt := FORMAT((lLocalTime – lUTCTime) / 3600);

lSign := ‘+’;

IF lTimeDiffTxt[1] = ‘-‘ THEN BEGIN

lSign := ‘-‘;

lTimeDiffTxt := DELCHR(lTimeDiffTxt,’=’,’-‘);

END;

EVALUATE(lLocalTime,lTimeDiffTxt);

EXIT(FORMAT(lLocalTime,0,lSign + ‘<hours24,2><minutes,2>’));

END;

Output:
If the Time zone is UTC +02:00 then the Output will be +0200
If the Time zone is UTC +02:00 and we have DST (Daylight Saving Time) then the Output will be +0300

Note:
I have formatted the final output of the Time to remove the “:” using the below code.
FORMAT(lLocalTime,0,lSign + ‘<Hours24,2><Minutes,2>’)
You can format the output per your requirement.

Please do let me know if in case there are some issues & suggestion about the code & approach. Thanks

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s