Получить дату из строки времени

Есть ли способ конвертировать строку времени ввода (например: 01:13) к объекту даты Zend, чтобы я позже сохранил его в столбце метки времени в базе данных Mysql.

Примеры:

Если текущая дата и время 2013-07-15 17:33:07 и пользовательские входы 18:05 выход должен быть 2013-07-15 18:05:00,

Если текущая дата и время 2013-07-15 17:33:07 и пользовательские входы 02:09 выход должен быть 2013-07-16 02:09:00, Обратите внимание, что с того момента, как введенное время было ниже, чем текущее время, оно воспринималось как завтрашнее время.

Я просто хочу получить следующий момент времени, который удовлетворяет введенному времени. Я открыт для решения с использованием простого PHP или Zend_Date.

2 ответа

Я думаю, вам следует сравнить текущее время со временем, введенным пользователем, и создать объект DateTime "сегодня" или "завтра". DateTime принимает strtotime() параметры относительного времени.

Быстрый взлом. Работает на сегодня, 15.07.2013 23:58 по местному времени:

$nextTime = new DateTime('today 18:10');
if ($nextTime < new DateTime('now')) { // DateTime comparison works since 5.2.2
    $nextTime = new DateTime('tomorrow 18:10');
}
echo $nextTime->format('d.m.Y H:i:s');

Вот рабочий пример для вас, просто добавьте свою динамическую переменную, чтобы проверить дату с пользовательскими вводами

Вы можете использовать функцию mktime для управления вашей датой.

$input_date = date("Y-m-d H:i:s",mktime(18,05,0,date("m"),date("d"),date("Y")));

echo "current time".$current_time = date('Y-m-d H:m:s');
echo "<br>User input is ".$input_date;

if(strtotime($current_time) > strtotime($input_date)){
    $input_date = date("Y-m-d H:i:s",mktime(18,05,0,date("m"),date("d")+1,date("Y")));

    echo "in";
}else{
    // nothing to do
}
echo "<br> result->".$input_date;

я надеюсь, что это обязательно решит вашу проблему

Другие вопросы по тегам