0

私は以前の質問を見ましたが、私が必要とするものに合うものは何もないようです。

私はスケジューリングシステムに取り組んでいますが、クライアントはタイムゾーンを追加したいと考えています。

したがって、基本的には、特定の日時にアクションを実行できる必要があります。

誰かが次の日時にアラートを受け取ることを選択したとします。

25-12-2010 13:01:00+/-彼らのタイムゾーン

これをunix_timestampとしてmysqlに保存できるようにする必要があります。私は、PHPのDateTimeを見てきましDateTimeZoneたが、これは私をさらに混乱させました。

私も見てきましたstrtotimeが、オフセットを使用して日付/時刻を計算するための最良の方法がわかりません。

4

1 に答える 1

4

同じページにいることを確認するために、UNIX タイムスタンプは単に「Unix エポック」(1970 年 1 月 1 日) からの秒数であることを繰り返したいと思います。したがって、単純な計算は UNIX タイムスタンプで機能します。

これには 2 つの方法があります。あなたの投稿から判断すると、どちらを使用したいかについて混乱しています。

最初の方法は最も簡単な (そして最も論理的な) 方法で、オフセットを保存し (すでに持っている場合)、それを 3600 (秒単位で 1 時間) 倍し、その値を最終実行時刻を取得するための現在の UNIX タイムスタンプ。

それを行う別の方法は、DateTimeandDateTimeZoneクラスを使用することです。ここに示すように、これら 2 つのクラスがどのように機能するかは、2 つのDateTimeZoneオブジェクトを作成することです。DateTime最初のパラメータが"now"で、2 番目のパラメータが上記のオブジェクトへの参照である2 つのオブジェクトをDateTimeZone(それぞれ) 作成します。次に、タイムゾーンオブジェクトを最初のパラメーターとして渡してタイムゾーンオブジェクトgetOffsetメソッドを呼び出し、最終的に現在のUNIXタイムスタンプに追加できる秒単位のオフセットを取得してジョブの実行に必要な時間を取得します。

2 番目の方法は、このような簡単なタスクに対してははるかに複雑に思えるので、最初のソリューションの方がニーズに適している可能性があります。ただし、より完全な方法が必要な場合は、 DateTimeandDateTimeZoneを使用することも間違いなく可能です。

strtotime に関する簡単な注意: Strtotime は date() コマンドの簡単な反対であり、探しているものを達成するための「ツール」以上の用途はありません。それ自体では、オフセットを変換したり見つけたりすることはありません。書式設定された日付と時刻を UNIX タイムスタンプに変換するだけです。

于 2010-11-16T21:36:58.067 に答える