0

確認日は次のとおりです。

$submission_date = 12-25-2014; //The date in mm-dd-yyyy format that is to be tested against today's date

$submission_date変数に含まれる日付は将来の日付であるため、エラーメッセージをエコーし​​たいと思います。

PHPを使用してこれを効率的かつ効果的に行うにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

1

投稿された形式が の場合、関数をm-d-Y使用して直接 UNIX タイムスタンプに変換することはできません。これは、が返されるためです。strtotime()false

使用する必要がある場合は、入力形式をby simplestrtotime()に変更します。m/d/Ystr_replace()

一方、DateTimeオブジェクトを直接比較できるクラスを使用できます。

$submission_date = DateTime::createFromFormat('!m-d-Y', $submission_date);
$today_date = new DateTime('today');

if ($submission_date > $today_date) {
    echo "submission_date is in the future\n";
}

demo

于 2014-12-10T07:52:06.823 に答える
1

これを行う方法は多数ありますが (たとえば、DateTime::createFromFormat() を使用して入力日付の正確な形式を制御するなど)、おそらくこの例に適した最も簡単な方法は次のとおりです。

$isFuture = (strtotime($submission_date) > strtotime($_POST['current_date']))

OPが質問を変更したことに注意してください。テスト対象の日付が $_POST 配列にない場合は、現在のシステム時刻を使用するようstrtotime($_POST['current_date'])に置き換えます。time()

時刻を無視して現在の日付と比較するには、次を使用します。

$today = new DateTime(date("Y-m-d"));
// $today = new DateTime("today");  // better solution courtesy of Glavić
// see http://php.net/manual/en/datetime.formats.relative.php for more info
$today_timestamp = $today->getTimestamp();
于 2014-12-10T05:45:54.450 に答える
0

PHP DateTimeを使用すると、入力日付が未来か古いかを現在の日付で確認できます。

$submission_date = DateTime::createFromFormat('m-d-Y', $submission_date);
$submission_date = $submission_date->format('Y-m-d');
$current_date    = new DateTime('today');
$current_date    = $current_date->format('Y-m-d');

if ($submission_date > $current_date)
{
       echo "Future date";
}
else
{
       echo "Old date";
}
于 2014-12-10T05:47:31.383 に答える