指定された日にどのシフトが働いているかを判断する次の関数があります。
これは次のように呼ばれます:
夏時間をまたがらない 2 つの日付を使用すると、正常に動作するようです。たとえば、3/14/2023 と 6/22/23 は 1 (正しい) を返します。ただし、2023 年 3 月 10 日と 23 年 6 月 22 日のように、夏時間が発生する日にまたがる場合は、4 が返されます。これは間違ったシフトです。
夏時間を気にせずに動作させるにはどうすればよいですか?
これは、計算が「日数」ではなく 1 日の秒数に基づいているためです。すべてではありませんが、ほとんどのタイムゾーンで、時間がわずかにずれるため、境界線を越えてコンバージョン数が変化することは間違いありません。また、@aaronfc のタイムゾーンがこのように機能しないか、デフォルトのタイムゾーンが UTC またはその他の静的オフセットに設定されている可能性もあります。
DateTime ライブラリは確実に計算できます:
出力:
また、関数が任意の文字列をデコードする方法を知る必要がないように、explode(',', $sequence) を関数の外に移動することをお勧めします。
explode(',', $sequence)
これは、計算が「日数」ではなく 1 日の秒数に基づいているためです。すべてではありませんが、ほとんどのタイムゾーンで、時間がわずかにずれるため、境界線を越えてコンバージョン数が変化することは間違いありません。また、@aaronfc のタイムゾーンがこのように機能しないか、デフォルトのタイムゾーンが UTC またはその他の静的オフセットに設定されている可能性もあります。
DateTime ライブラリは確実に計算できます:
リーリー出力:
リーリーまた、関数が任意の文字列をデコードする方法を知る必要がないように、
explode(',', $sequence)
を関数の外に移動することをお勧めします。