確認日は次のとおりです。
$submission_date = 12-25-2014; //The date in mm-dd-yyyy format that is to be tested against today's date
$submission_date
変数に含まれる日付は将来の日付であるため、エラーメッセージをエコーしたいと思います。
PHPを使用してこれを効率的かつ効果的に行うにはどうすればよいですか?
前もって感謝します。
確認日は次のとおりです。
$submission_date = 12-25-2014; //The date in mm-dd-yyyy format that is to be tested against today's date
$submission_date
変数に含まれる日付は将来の日付であるため、エラーメッセージをエコーしたいと思います。
PHPを使用してこれを効率的かつ効果的に行うにはどうすればよいですか?
前もって感謝します。
投稿された形式が の場合、関数をm-d-Y
使用して直接 UNIX タイムスタンプに変換することはできません。これは、が返されるためです。strtotime()
false
使用する必要がある場合は、入力形式をby simplestrtotime()
に変更します。m/d/Y
str_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";
}
これを行う方法は多数ありますが (たとえば、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();
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";
}