5

1 つは日付を表し、もう 1 つは時刻を表す 2 つの変数を取り、それらを組み合わせて 1 つの日付を作成します。

次に、その結​​合された日付と時刻を使用して、現在の日付と時刻が結合された日付と時刻から 24 時間以内であるかどうかを確認したいと思います。

$game_date = $game['date'];
$game_time = $game['time'];

$combined_date_and_time = date('$game_date $game_time');

$game_date 読み取りは次のように保存されます: 03/28/2013

$game_time 読み取りは次のように保存されます: 07:05 pm

出力では、$combined_date_and_time は次のように読み取ります。

$2pm03America/Los_Angeles_28pm31America/Los_Angeles $2pm03America/Los_Angeles_313803America/Los_Angeles

もちろん、これは正しくありません。

2 つを 1 つの日付に結合して比較することはできますか?

4

2 に答える 2

5
$game_date = game['date'];
$game_time = game['time'];

$combined_date_and_time = $game_date . ' ' . $game_time;
$past_date = strtotime($combined_date_and_time);

$hours = 24;

// Check if date is more recent than the specified number of hours
if ((time() - $past_date) < (60 * 60 * $hours))
{
    echo 'Yes!';
}


しかし、注意してください!日付がヨーロッパ形式 ( dd/mm/yyyy) で保存されている場合は、日付を解析する前に順序を変更する必要があります。そうしないと機能しません。

日付区切り記号が-または.の場合、ヨーロッパ形式が想定されます。

if (strpos($game_date, '-') !== false)
{
    list($day, $month, $year) = explode('-', $game_date);
    $game_date = $month . '/' . $day . '/' . $year;
}
else if (strpos($game_date, '.') !== false)
{
    list($day, $month, $year) = explode('.', $game_date);
    $game_date = $month . '/' . $day . '/' . $year;
}

上記のコードは、日付変数の初期化と結合された_date_and_time 変数の間に入ります。

于 2013-03-28T21:51:13.997 に答える
0

strtotimeの代わりに使用date:

php > $dt = strtotime("03/28/2013 07:05 pm");
php > echo date("Y-m-d H:i:s", $dt);
2013-03-28 19:05:00

(また、変数は単一引用符で囲まれた文字列では展開されません。代わりに'二重引用符で囲まれた文字列を使用してください)"

于 2013-03-28T21:45:24.263 に答える