Question
Action Centerのタスクフォームに『日付/時刻コンポーネント』を配置しました。
このコンポーネントの値がタスクフォームの戻り値が標準時間(UTC)に変換されて戻されました。
この値を日本時間(JST)で戻す方法はありますか。
Answer
原因
Action Centerの『日付/時刻コンポーネント』に日時が日本時間で入力されても、戻り値は自動的に標準時間に変換されます。
これはAction Centerの仕様です。
Resolution
Action Centerの『日付/時刻コンポーネント』の戻り値を手動で日本時間に変換する必要があります。
以下に実装例を示します。
- 『日付/時刻コンポーネント』のフィールドキーのプロパティ名を指定します。
-
StudioでDateTime型の変数を作成します。
-
『フォーム タスクを作成』アクティビティの「フォーム データ」で、『日付/時刻コンポーネント』の出力値に作成した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 の使い分け