我的下面的函数是从另一个正常工作的函数复制的。应该从查询字符串中获取值并将它们转换为日期:
function updateShift()
{
echo $name = $_GET['shift_name'];
echo $start_date = date('Y-m-d H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));
echo $stop_date = date('Y-m-d H:i:s', strtotime("{$_GET['stop_hours']}:{$_GET['stop_minutes']} {$_GET['stop_ampm']}"));
}
然而它返回:
Shift Name
1969-12-31 17:00:00
1969-12-31 17:00:00
知道为什么其他地方工作得很好但不在这里?正确的shift_name证明了查询字符串。
答案 0 :(得分:1)
如果你这样做怎么办:
function updateShift()
{
echo $name = $_GET['shift_name'];
echo $start_date = date('Y-m-d H:i:s', strtotime($_GET['start_hours'].':'.$_GET['start_minutes'].' '.$_GET['start_ampm']));
echo $stop_date = date('Y-m-d H:i:s', strtotime($_GET['stop_hours'].':'.$_GET['stop_minutes'].' '.$_GET['stop_ampm']));
}
或
function updateShift()
{
echo $_GET['shift_name'];
echo date('Y-m-d H:i:s', strtotime($_GET['start_hours'].':'.$_GET['start_minutes'].' '.$_GET['start_ampm']));
echo date('Y-m-d H:i:s', strtotime($_GET['stop_hours'].':'.$_GET['stop_minutes'].' '.$_GET['stop_ampm']));
}
答案 1 :(得分:0)
你收到的日期是Unix纪元的开始,因为你的日期函数调用是假的(或0)作为第二个参数。我刚刚使用你的代码运行了一些快速测试,我发现strtotime返回false并提供了值。
echo "{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}";
=> '4:0 PM'
您需要确保在分钟字段中有2位数字,以允许strtotime将其视为有效时间并正确解析。为此,您可以更新查询字符串,使用str_pad或sprintf以确保您拥有有效时间所需的2位数字。