0

開始時刻、終了日、および終了時刻の変数。

日付変数はフォーマットされていますyyyy-mm-dd

時間変数はフォーマットさhh-mmれています (ただし、使用できるのは時間番号のみです。たとえば、分は常に 00 です)。

これらの変数をデータベースに問題なく挿入できますが、挿入する前に、開始日時が終了日時より前であることを確認したいと思います。時間と日付が早いかどうかを確認する方法は知っていますが、時間と日付を一緒に確認することはできません。

$_POST['start_time']
$_POST['end_time']
$_POST['start_date']
$_POST['end_date']

変数とそれらを取得する方法です。

4

4 に答える 4

7

オブジェクトを使用DateTimeして生活をシンプルにします。

<?php
// assuming the following values...
$_POST['start_time'] = '06:00';
$_POST['end_time'] = '10:00';
$_POST['start_date'] = '2012-01-01';
$_POST['end_date'] = '2013-06-02';

//set up two DateTime objects
$start = DateTime::createFromFormat('Y-m-d H-i', $_POST['start_date'] . ' ' . $_POST['start_time']);
$end = DateTime::createFromFormat('Y-m-d H-i', $_POST['end_date'] . ' ' . $_POST['end_time']);

// check if they're valid
if ($start < $end) {
  echo 'We are good...';
} else {
  echo 'Something bad happened...';
}

$_POSTこれは、 ed値が有効であることを前提としていることに注意してください。まだサニタイズしていない場合はtry/catch、少なくともラップしてください。

于 2013-04-16T13:12:04.677 に答える
3
function getTime ($ymd, $hi) {
    return strtotime($ymd." ".$hi);
}
if (getTime($_POST['start_date'], $_POST['start_time']) < getTime($_POST['end_date'], $_POST['end_time'])) {
    echo "Ok!";
}

Unix タイムスタンプに変換して比較するだけです。

于 2013-04-16T13:11:20.840 に答える
2

私はそれを使用DateTime::createFromFormat()します。このような:

$start = DateTime::createFromFormat('Y-m-d H-i',
             $_POST['start_date'] . ' ' . $_POST['start_time']);
于 2013-04-16T13:08:37.220 に答える
0

配列を分解してから、 mktime() 関数を使用して日付を秒に渡してみてください。次に、両方の日付を比較します。秒数が大きいほど遅いです。

list($strHour, $strMin) = explode('-', $_POST['start_time']);
list($endHour, $endMin) = explode('-', $_POST['end_time']);
list($strYear, $strMonth, $strDay) = explode('-', $_POST['start_date']);
list($endYear, $endMonth, $endDay) = explode('-', $_POST['end_date']);

$startSeconds = mktime($strHour, $strMin, 0, $strMonth, $strDay, $strYear);
$endSeconds   = mktime($endHour, $endMin, 0, $endMonth, $endDay, $endYear);

if ($startSeconds > $endSeconds) {
    echo 'Start is bigger';
}
于 2013-04-16T13:07:46.257 に答える