同じページにいることを確認するために、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 タイムスタンプに変換するだけです。