我通过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(这是他们提供的)?
我希望有人能在这里看到我做错了什么,先谢谢!
答案 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;
}
高兴地重申