前の「午前4時」の時間を取得するにはどうすればよいですか?

私は、前の「午前4時」の秒数(標準時間()形式)を取得したいと思います。

私の最初の試みは、 mktime(4,0,0)でした。

これは、00:00から04:00までを除いて、次の「4時」の時間を与えるよりもむしろ、その日のたびに機能します。

  • どうすればこの問題に取り組むことができますか?
1

3 答え

$now    = new DateTime();
$fourAm = new DateTime('today 4am');

if ($now < $fourAm) {
    $time = strtotime('yesterday 4am');
} else {
    $time = $fourAm->getTimestamp();
}

$ time は、現在の時刻に関係なく、「最後の4am」のタイムスタンプです。

編集:

また、 DateTime オブジェクトなしでこれを行うこともできますが、私はそのクラスのスイートが大好きです。 :-P

$now    = time();
$fourAm = strtotime('today 4am');

if ($now < $fourAm) {
    $time = strtotime('yesterday 4am');
} else {
    $time = $fourAm;
}
4
追加された

作成した時間が将来の場合は、1日を減算します。

2
追加された
$date = strtotime('yesterday 4am');
0
追加された
彼は時間が[0:00、4:00]であれば昨日しか望んでいない。
追加された 著者 weston,
@ウエストン:ああ、そうだよ、私の間違いだよ - 私は "最後の4am"は "これ前のもの"を意味すると理解したが、 "最近の4am"を望んでいる。私はstrtotime()が "最後の土曜日"のようなもので動作することを知っているので、私は "最後の4am"を直接試みたが運がなかった。しかたがない。
追加された 著者 Alex Howansky,
strtotime()はかなり素晴らしい機能です。
追加された 著者 Chris Sobolewski,
ニース。私はあなたが$ results = strtotime( "昨日")+(60 * 60 * 4)をしなければならないと思った。それはさらにエレガントに機能します。
追加された 著者 phpmeh,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com