その日のランダムなタイムスタンプが与えられた場合、その日のUNIX時間範囲を取得する簡単な方法はありますか? 「2012 年 8 月 21 日火曜日 11:11:11 GMT」である 1345547471 のような日付があります。
このようなタイムスタンプを受け取り、その日の 00:00 時間のタイムスタンプと 23:59 時間のタイムスタンプを返すことができる PHP 関数がありますか?
ありがとうございました。
確かに、DateTimeはそれを行うことができます。
$time = 1345547471;
$date = new DateTime;
// $date->setTimezone( new DateTimeZone( "America/New_York")); // Can set TZ here if needed
$date->setTimestamp( $time);
これで、時間を好きなように設定できます。
$date->setTime( 0, 0, 0); // 0h 0m 0s
結果の UNIX タイムスタンプを取得します。
$timestamp = $date->getTimestamp();
次のユースケースでも同じです:
$date->setTime( 23, 59, 0);
$timestamp = $date->getTimestamp();
DateTime は、夏時間と現地時間の不連続のケースを適切に処理することに注意することが重要です。
このようにmod
(除算後の余りを与える) PHP 関数を使用して、Unix タイムスタンプの最初の 1 秒 (つまり、今日の 0:00:00) を取得できます。
$var=time()-(time()%86400);
次に、この UNIX タイムスタンプを使用して、86399 を追加して、1 日の最後の 1 秒を取得できます。
編集:これは、デイライトセービングを考慮していません。
$ts = 1345547471;
$ts_00_00 = mktime(0,0,0, date("m", $ts), date("d",$ts), date("Y",$ts);
$ts_23_59 = mktime(23,59,59, date("m", $ts), date("d",$ts), date("Y",$ts);
ドキュメンテーション:
PHP >= 5.3.0 を使用している場合は、これを使用できます... これを確認してください。