ในการพัฒนาแอปพลิเคชันด้วยภาษา AL สำหรับ Microsoft Dynamics 365 Business Central การจัดการกับวันที่และเวลา (DateTime) เป็นสิ่งที่สำคัญ โดยเฉพาะอย่างยิ่งเมื่อมีการใช้งานในหลายเขตเวลา (Time Zones) ฟังก์ชัน ConvertDateTimeFromUTCToTimeZone ใน TypeHelper Codeunit ช่วยให้คุณสามารถแปลงค่า DateTime จาก UTC ไปยัง Time Zone ที่ต้องการได้อย่างง่ายดาย
รายละเอียดของฟังก์ชัน
รูปแบบของฟังก์ชัน
procedure ConvertDateTimeFromUTCToTimeZone(InputDateTime: DateTime; TimeZoneTxt: Text): DateTime
var
TimeZoneInfo: DotNet TimeZoneInfo;
Offset: Duration;
begin
if TimeZoneTxt = '' then
exit(InputDateTime);
GetUserClientTypeOffset(Offset);
InputDateTime := InputDateTime - Offset;
TimeZoneInfo := TimeZoneInfo.FindSystemTimeZoneById(TimeZoneTxt);
exit(InputDateTime + TimeZoneInfo.BaseUtcOffset);
end;
พารามิเตอร์
InputDateTime: ค่าวันที่และเวลาในรูปแบบ UTC ที่ต้องการแปลงTimeZoneTxt: ชื่อของ Time Zone ที่ต้องการแปลงไป
คำอธิบาย
ฟังก์ชันนี้จะรับค่า DateTime ในรูปแบบ UTC และแปลงไปยัง Time Zone ที่ระบุโดย TimeZoneTxt ถ้า TimeZoneTxt ว่างเปล่า ฟังก์ชันจะคืนค่า InputDateTime โดยไม่ทำการแปลง
การทำงานภายในของฟังก์ชัน
- ตรวจสอบ TimeZoneTxt: ถ้า
TimeZoneTxtเป็นค่าว่าง (''), ฟังก์ชันจะคืนค่าInputDateTimeทันที - ปรับค่า Offset ของผู้ใช้: เรียกใช้
GetUserClientTypeOffset(Offset);เพื่อปรับค่าชดเชยของเวลาตามประเภทของ Client ที่ผู้ใช้กำลังใช้งาน - แปลง TimeZoneTxt เป็น TimeZoneInfo: ใช้
TimeZoneInfo.FindSystemTimeZoneById(TimeZoneTxt);เพื่อหา Time Zone ที่ตรงกับชื่อที่ระบุ - คำนวณเวลาที่แปลงแล้ว: นำค่า
InputDateTimeลบด้วยOffsetและบวกกับTimeZoneInfo.BaseUtcOffsetเพื่อให้ได้เวลาที่ถูกต้องใน Time Zone ที่ต้องการ
ตัวอย่างการใช้งาน
ตัวอย่างที่ 1: แปลงเวลาจาก UTC ไปยัง “Pacific Standard Time”
procedure TestConvertDateTime()
var
TypeHelper: Codeunit "Type Helper";
InputDateTime: DateTime;
OutputDateTime: DateTime;
TimeZoneTxt: Text;
begin
InputDateTime := CURRENTDATETIME;
TimeZoneTxt := 'Pacific Standard Time';
OutputDateTime := TypeHelper.ConvertDateTimeFromUTCToTimeZone(InputDateTime, TimeZoneTxt);
MESSAGE('เวลาปัจจุบันใน Pacific Standard Time คือ %1', FORMAT(OutputDateTime));
end;
คำอธิบายตัวอย่าง
- กำหนด
InputDateTimeเป็นเวลาปัจจุบันใน UTC โดยใช้CURRENTDATETIME - กำหนด
TimeZoneTxtเป็น'Pacific Standard Time' - เรียกใช้ฟังก์ชัน
ConvertDateTimeFromUTCToTimeZoneเพื่อแปลงเวลา - แสดงผลลัพธ์โดยใช้
MESSAGE
สรุป
ฟังก์ชัน ConvertDateTimeFromUTCToTimeZone ใน TypeHelper Codeunit เป็นเครื่องมือที่มีประโยชน์สำหรับการแปลงเวลาจาก UTC ไปยัง Time Zone ที่ต้องการ โดยรองรับการใช้งานกับ Time Zone ต่าง ๆ ที่ระบบปฏิบัติการรองรับ การเข้าใจการทำงานและการใช้งานฟังก์ชันนี้จะช่วยให้การพัฒนาแอปพลิเคชันด้วยภาษา AL มีประสิทธิภาพมากยิ่งขึ้น
