从查询字符串中获取值的问题

时间:2009-08-17 12:05:51

标签: php query-string

我的下面的函数是从另一个正常工作的函数复制的。应该从查询字符串中获取值并将它们转换为日期:

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证明了查询字符串。

2 个答案:

答案 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位数字。