从时间字符串中获取日期

时间:2013-07-15 21:39:38

标签: php zend-framework date datetime zend-date

有没有办法将输入时间字符串(例如:01:13)转换为Zend日期对象,以便稍后将其存储在Mysql数据库的timestamp列中。

示例:

如果当前日期时间为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 个答案:

答案 0 :(得分:1)

我认为您应该将当前时间与用户输入的时间进行比较,并创建“今天”或“明天”的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');

答案 1 :(得分:-1)

这里有一个工作示例,您只需添加动态变量以使用用户输入检查日期

您可以使用mktime function来管理日期。

$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;

我希望它一定会解决你的问题