表現方法はより複雑ですが、この方法ではハードコーディングは必要ありません。 対応するオフセット整数コレクションとともにコレクションに値を設定します。 ただし、特定の時間帯に適応する場合、特に前に飛び出すか後退するとUTCに日が変わる場合は、式が複雑になることがあります。 計算
この例では、タイムゾーンは3月の第2日曜日の午前7:00に早送りされます。 UTCであり、年に関係なく、11月の第1日曜日の午前8時にフォールバックします。 東部標準時を使用すると、これはDSTの間、UTCオフセットが-4時間(または-240分)であり、DSTにない場合、UTCオフセットは-5時間(または-300分)です。 式の結果は「ローカル」です。 適切なオフセットがUTCに追加された状態で -4または-5時間 DateTime値を計算するには:
- 追加する データ更新 アクション。
- データの更新アクションで、 ステートメントを更新します。
- 下 変数名追加する Flow.LocalDateTime。
- 下 割り当てる値、大きな式エディタに切り替えて式を追加します。
AddMinutes(Flow.StartDateTimeUtc,
(
If(Flow.StartDateTimeUtc >= GetDayOfWeekOccurrence(1,2,Year(Flow.StartDateTimeUtc),3,1,0,0)
and Flow.StartDateTimeUtc <= GetDayOfWeekOccurrence(1,1,Year(Flow.StartDateTimeUtc),11,1,0,0),
-240,
-300)
)
)
この式のロジックは、3月の第2日曜日の午前7時と午前8時の午前8時に、現在DSTにいるかどうかを決定します。
論理に送信された最初のパラメータ もし 上記の式では与えられたUTCかどうかを判断する機能を提供します。 EasternタイムゾーンのDSTウィンドウに表示されます。 これを使用して、オフセットを 240分(-4時間)または-300分(-5時間)のいずれかになります。 式の残りの部分は適用する値を提供します。 DSTがオンの場合はtrue、そうでない場合はfalseと評価されるブール式が必要な場合は、ブール値を返すので、このロジックを別の式に抽出します。
(
(Month(Flow.UtcDateTime) > 3)
or
(Month(Flow.UtcDateTime) == 3 and Month(AddDays(Flow.UtcDateTime, -7)) == 3 and Month(AddDays(Flow.UtcDateTime, -14)) == 3)
or
(
(Month(Flow.UtcDateTime) == 3 and Month(AddDays(Flow.UtcDateTime, -7)) == 3 and Month(AddDays(Flow.UtcDateTime, -14)) == 2)
and
(DayOfWeek(Flow.UtcDateTime) > 1 or (Hour(Flow.UtcDateTime) >= 7))
)
)
and
(
(Month(Flow.UtcDateTime) < 11)
or
(
(Month(Flow.UtcDateTime) == 11 and Month(AddDays(Flow.UtcDateTime, -7)) == 10)
and
(
(DayOfWeek(Flow.UtcDateTime) == 1 and Hour(Flow.UtcDateTime) < 8)
or
DayOfWeek(Flow.UtcDateTime)!=1
)
)
)