0

我的问题:当我结合我的 Jquery datepicker 日历输入和我放在它旁边的下拉菜单来捕获小时、分钟和 AM/PM 时,我无法获得正确的打印日期。

这是我的php代码:

echo protect($_POST['truck_arrive'])." - truck arrive<br>";
echo protect($_POST['truck_arrive_hours'])." - truck arrive hours<br>";
echo protect($_POST['truck_arrive_mins'])." - truck arrive mins<br>";
echo protect($_POST['truck_arrive_ampm'])." - truck arrive ampm<br>";

$truck_arrive_comb = protect($_POST['truck_arrive']).protect($_POST['truck_arrive_hours']).protect($_POST['truck_arrive_mins']).protect($_POST['truck_arrive_ampm']);

echo $truck_arrive_comb." - truck arrive combination<br>";
echo strtotime($truck_arrive_comb)." - truck arrive combination string to time<br>";
echo date("Y-m-d h:i:s",strtotime($truck_arrive_comb))." - truck arrive combination string to time date format<br>";

//$truck_arrive = date("Y-m-d h:i:s",strtotime($truck_arrive_comb));
$truck_arrive = date("Y-m-d h:i:s",strtotime(protect($_POST['truck_arrive'])));
echo $truck_arrive." - truck arrive date format<br>";

它输出这个:

01/16/2013 - truck arrive
01 - truck arrive hours
04 - truck arrive mins
AM - truck arrive ampm
01/16/20130104AM - truck arrive combination
- truck arrive combination string to time
1969-12-31 07:00:00 - truck arrive combination string to time date format
2013-01-16 12:00:00 - truck arrive date format
4

2 回答 2

0

问题是这$truck_arrive_comb是一个无效的格式strtotime()

请看这里strtotime()

于 2013-01-20T20:43:06.680 回答
0

这是您可以使用的简化,只需用适当的替换硬编码值$_POST

/* hard coded values for test*/
$hours=1;
$minutes=40;
$am_pm='am';

$hours = $am_pm == 'pm' ? $hours +12 : $hours;
$dateTime=strtotime('01/16/2013')  ;/* returns seconds*/

$timeInSeconds= ($minutes * 60) + ($hours*3600);
/* add time in seconds to date in seconds*/
$totalSeconds= $dateTime + $timeInSeconds;

echo date('Y-m-d H:i:s',$totalSeconds );

如果需要考虑时区,将需要修改。

另一种方法是将时间和日期字符串解析为与上述输出相同的格式,并将其传递给strtotime()或简单地匹配date()使用字符串创建的输出

于 2013-01-20T20:46:59.503 回答