1

その日のランダムなタイムスタンプが与えられた場合、その日のUNIX時間範囲を取得する簡単な方法はありますか? 「2012 年 8 月 21 日火曜日 11:11:11 GMT」である 1345547471 のような日付があります。

このようなタイムスタンプを受け取り、その日の 00:00 時間のタイムスタンプと 23:59 時間のタイムスタンプを返すことができる PHP 関数がありますか?

ありがとうございました。

4

5 に答える 5

7

確かに、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 は、夏時間と現地時間の不連続のケースを適切に処理することに注意することが重要です。

于 2012-08-21T13:30:14.600 に答える
6

このようにmod(除算後の余りを与える) PHP 関数を使用して、Unix タイムスタンプの最初の 1 秒 (つまり、今日の 0:00:00) を取得できます。

$var=time()-(time()%86400);

次に、この UNIX タイムスタンプを使用して、86399 を追加して、1 日の最後の 1 秒を取得できます。

編集:これは、デイライトセービングを考慮していません。

于 2012-08-21T13:30:39.480 に答える
0
$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);

ドキュメンテーション:

于 2012-08-21T13:30:15.067 に答える
0

PHP >= 5.3.0 を使用している場合は、これを使用できます... これを確認してください。

http://www.php.net/manual/en/datetime.createfromformat.php

于 2012-08-21T13:31:09.497 に答える