見出し画像

【Vket Cloud Tips】時差を考慮した時間取得

特にタイムゾーンを跨いだ時間取得をする場合において、HeliScriptで時差に影響されない形で時間を取得したい場合があります。
例えば、これを以下のような形で行うと、ローカル時間が取得されます。

Date currentDate = new Date();

この場合、例えば、午前7時を指定した場合、米国西海岸では前日の午後3時(夏時間の場合)など、地域によってまちまちになってしまいます。
これらを表示を含めてまとめるためには以下のようなコードが使用できます。

private Date GetCurrentDateJST()
{
   Date currentLocal = new Date();
   Date currentUTC = hsCreateDateUTC(currentLocal.GetUTCYear(), currentLocal.GetUTCMonth(),
     currentLocal.GetUTCDay(), currentLocal.GetUTCHours(), currentLocal.GetUTCMinutes(),
     currentLocal.GetUTCSeconds(), currentLocal.GetUTCMilliseconds());
  currentUTC.AddHours(9);
  return currentUTC;
}

このコードは時間取得したものを一度UTCに変換し、それに9時間加えたものを返すような仕組みになっています。
尚、このコードによって取得される時間からUTCを得ると間違った時間が得られるのでその点は注意してください。

また、この例では日本時間(JST、UTC+9)の取得をしていますが、AddHours()の部分を書き換えると他の時間でも応用できます。
ただし、各国の夏時間の開始と完了に関しては独自に実装する必要があるのでご注意ください。