0

International Timezones&GMTの操作に関する簡単な質問です。

グリニッジ標準時+-の時間帯に基づいて、世界中のすべての人に特定の時間(午前6時)にメールを送信する必要があるアプリがあります。GMTとタイムゾーンでこれをどのように処理するか迷っています。どんな入力でも大歓迎です。

4

3 に答える 3

1

以下のようにphpタイムゾーン設定関数を使用できます

date_default_timezone_set('America / Los_Angeles');

この機能を使用すると、ユーザーの時間を取得できます。これに基づいて、メールを送信できます。

詳細については、date_default_timezone_setを参照してください

于 2011-12-20T17:19:18.850 に答える
1

素朴なことに、各ユーザーのタイムゾーンID(tzid )を収集(または何らかの方法で決定)し、UTC時間ごとにcronジョブを実行して、これらのゾーンのいずれかで現在の時刻が06:00であるかどうかを確認できます。 。

ただし、America / St_Johns(UTC-03:30)やAsia / Kathmandu(UTC + 05:45)など、UTCからの1時間のオフセットがないタイムゾーンがいくつかあるため、それほど簡単ではありません。 cronを1時間ごとに実行しただけでは、これらのユーザーは電子メールを受信しません。したがって、安全のために、15分ごとにcronを実行することをお勧めします。

ただし、cronジョブは実行がスケジュールされてから数秒後に開始されることが多いため、06:00:00との同等性をテストするべきではありません。さらに、タイムゾーンは15分単位である必要はありませんただし、ありがたいことに、一般的に認識されているすべてのゾーンはそうです)。

たとえば、cronを15分ごとに実行している場合は、そのウィンドウの幅を15分(たとえば、 05: 55から06:10)にして、エッジケースを確実にキャッチします。cronの実行がスキップされる可能性はまだ理論的にはありますが、誰かが今日の電子メールをまだ送信しているかどうかを示す追加データを保存せずに(送信していない場合は差を埋める)、それが最善です。できる。

于 2011-12-30T17:58:29.837 に答える
0

cronを実行して、ユーザーの1人が午前6時のどこかに存在するかどうかを1時間ごとに確認できます。

于 2011-12-20T17:12:59.880 に答える