设置日期选择form php


Setup Date Select form php

我没有PHP背景,但最近的客户端需要一些更新,所以我正在尽我最大的努力。我想要完成的是首先更新表单,接受正确的日期格式,使用我创建的代码进行转换,如果从现在的时间不到24小时,就会出现错误。现在的表单:

<p>
			<label for="date">Date:<span>*</span></label>
			<span>
				<input type="text" name="date" id="date" value="<?php $this->value('date'); ?>" size="25" />
			</span>
		</p>
        
        <p>
			<label for="time">Eat Time:<span>*</span></label>
			<span>
				<input type="text" name="time" id="time" value="<?php $this->value('time'); ?>" size="10" />
			</span>
		</p>
        
        <p>
        <label for="timedes">AM or PM:<span>*</span></label>
			<span>
				<select name="timedes" id="timedes">
					<option value="0" <?php $this->value('timedes', '0', 'selected="selected"'); ?>>Select..</option>
					<option value="AM" <?php $this->value('timedes', 'AM', 'selected="selected"'); ?>>AM</option>
					<option value="PM" <?php $this->value('timedes', 'PM', 'selected="selected"'); ?>>PM</option>
				</select>
			</span>
		</p>

我需要修改的代码来验证它是否小于24小时。

// define variables for date
date_default_timezone_set('America/New_York'); // timezone
$dateInput = '10/11/2015 15:54'; //date they selected string
$cateringDate = (strtotime("$dateInput")); // date selected converted to time
$dateNow = date('m/d/y H:i'); // current date and time string
$currenttime = (strtotime("$dateNow")); // current date and time converted
$dateAllowed = $currenttime + (86400); // current date and time 24 hours added on
$difference = $dateAllowed - $cateringDate; // date selected vs current date + 24hours
if ($cateringDate >= $dateAllowed) {
  echo 'good job';
} else {
  echo 'try again';
}

有多种方法可以做到这一点。但这里有一个使用strtotime:

    date_default_timezone_set('America/New_York'); // timezone
    $dateInput = '10/11/2015 15:54';
    if (strtotime('+24 hours') < strtotime($dateInput)) {
        echo 'good job';
    } else {
        echo 'try again';
    }

如果strtotime不理解格式,它返回false,所以:

    if (false === strtotime($dateInput)) {
        echo 'Sorry, what?';
    }

使用datetime类并利用diff方法,即:

date_default_timezone_set( 'America/New_York' ); // timezone
$date1 = new DateTime( 'NOW' );
$dateInput = '10/10/2015 15:54';
$date2 = DateTime::createFromFormat( 'm/d/Y H:i', $dateInput );
$diff = $date2->diff( $date1 );
if( $diff->format( '%d' ) != 0 ){
    echo "good job";
}else{
    echo "try again";
}

我们检查NOW$dateInput之间的差异(以天为单位)是否与0不同,零表示比未来或以前的日期小于24h