UiPath.Form.Activitiesの『日付/時刻コンポーネント』を日本時間で返す方法

:grey_question: Question

Action Centerのタスクフォームに『日付/時刻コンポーネント』を配置しました。

このコンポーネントの値がタスクフォームの戻り値が標準時間(UTC)に変換されて戻されました。

この値を日本時間(JST)で戻す方法はありますか。

:bulb: Answer

原因
Action Centerの『日付/時刻コンポーネント』に日時が日本時間で入力されても、戻り値は自動的に標準時間に変換されます。

これはAction Centerの仕様です。

Resolution
Action Centerの『日付/時刻コンポーネント』の戻り値を手動で日本時間に変換する必要があります。

以下に実装例を示します。

  1. 『日付/時刻コンポーネント』のフィールドキーのプロパティ名を指定します。

  1. StudioでDateTime型の変数を作成します。

  2. 『フォーム タスクを作成』アクティビティの「フォーム データ」で、『日付/時刻コンポーネント』の出力値に作成したDateTime型の変数を指定します。

4.以下のいずれかの方法で、DateTime型の変数から日本時間の文字列を取得できます。

対策1:

『代入』アクティビティで、DateTime型の変数に対してAddHours(9)を使用し、UTCからJSTに変換します。

例:outputDate = outputDate.AddHours(9)

その後、ToStringメソッドを使用して日本時間の文字列を取得します。

対策2:

ToLocalTimeメソッドを使用して、outputDateをシステムのローカルタイムに変更し、日本時間の文字列を取得します。

例: outputDate.ToLocalTime.ToString(“yyyy/MM/dd HH:mm:ss”)

これらの方法で、日本時間の形式に変換された文字列を得ることができます。

※別の方法としては、DateTimeOffset型を使用してタイムゾーンを変更することも可能です。
タイムゾーンの変換について、Microsoft公式記事をご参考ください。
ガイド:DateTime、DateOnly、DateTimeOffset、TimeSpan、TimeOnly、TimeZoneInfo の使い分け