Дата установки Выберите форму php

1

У меня нет фона в 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';

}
Теги:
validation
forms

2 ответа

0
Лучший ответ

Существует несколько способов сделать это. Но здесь используется 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?';
    }
  • 0
    будет ли способ сделать это вместо этого с требованием выбора утра и вечера и 12 часов времени? что нужно изменить, чтобы правильно рассчитать, или для того, чтобы рассчитать, нужно 24 часа?
  • 0
    Strtotime довольно умный. Например "2015-10-11 10 утра" будет работать. Вы также можете обратиться к документации для получения дополнительных примеров
Показать ещё 1 комментарий
0

Используйте класс 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 от будущей или предыдущей даты.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню