Получить дату из строки времени
Есть ли способ конвертировать строку времени ввода (например: 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;
я надеюсь, что это обязательно решит вашу проблему