如何让PHP查看日期时间值

时间:2017-01-02 01:12:15

标签: php mysql datetime

我通过URL将以下值传递给PHP:

&newtimestamp=2016-12-21%2014:44:44.

而不是%20我尝试过+

在PHP中我有这个:

$newtimestamp = $_GET["newtimestamp"]; 

如果我这样做,则会正确显示时间戳:

echo ($newtimestamp);

但是在尝试时:

echo date_format($newtimestamp,'U');

echo date_format($newtimestamp,'Y-m-d H:i:s');

我根本没有输出。稍后在脚本中,输入用于与SQL表进行比较:

$sql = ("SELECT sender,subject,timestamp,threadid,username,notify,msgtype FROM Messages WHERE sender = '$usernametmp' AND subject !=''  AND timestamp > '$newtimestamp' ORDER BY timestamp");

我根本没有得到任何结果。

我得到结果如果我手动将时间戳设置为

$newtimestamp = '1985-10-07 11:42:12';

我在想我需要将其定义为日期时间:

$timestamp = new DateTime($newtimestamp); 

然后我收到服务器错误。 顺便说一句,PHP版本是5.3。并且需要由我的托管服务提供商进行更改。如果这是解决方案,是否有很多与5.3一起运行的东西不再适用于5.5或5.6(这是他们提供的)?

我希望有人能在这里看到我做错了什么,先谢谢!

2 个答案:

答案 0 :(得分:0)

您需要使用date_create功能并解码GET上的网址,如下所示:

<?php
$newtimestamp=date_create(urldecode($_GET['newtimestamp']));
echo date_format($newtimestamp,"Y/m/d H:i:s");

答案 1 :(得分:0)

您无法将人工时间与unix时间格式进行比较,unix时间如下所示

  

1483319956

所以你可能需要一个功能来帮助你做到这一点

尝试我写的自定义函数

change_date_to_timestamp($date_string)
{
    $array = explode(' ', $date_string);
    $date = $array[0];
    $date = explode('-', $date);
    $year = (int)$date[0];
    $month = (int)$date[1];
    $day = (int)$date[2];
    $hour = 00;
    $minute = 00;
    $second = 00;

    if (isset($array[1])) {
        $time = $array[1];
        $time = explode(':', $time);
        $hour = (int)$time[0];
        $minute = (int)$time[1];
        $second = (int)$time[2];
    }


    $stamp = mktime($hour, $minute, $second, $month, $day, $year);

    return $stamp;
}

高兴地重申