Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php strtotime和date输出不正确_Php_Date_Strtotime - Fatal编程技术网

Php strtotime和date输出不正确

Php strtotime和date输出不正确,php,date,strtotime,Php,Date,Strtotime,我在回显数据库中保存的日期的正确unix时间戳时遇到问题 $activeWorkRow['WorkDate'] = "9/24/2015 1:45:53 PM"; $locateDate = $activeWorkRow['WorkDate']; $locateDate = str_replace('/', '-', $locateDate); //$locateDate = date('m-d-Y', strtotime($locateDate)); //$locateDate = strto

我在回显数据库中保存的日期的正确unix时间戳时遇到问题

$activeWorkRow['WorkDate'] = "9/24/2015 1:45:53 PM";
$locateDate = $activeWorkRow['WorkDate'];
$locateDate = str_replace('/', '-', $locateDate);
//$locateDate = date('m-d-Y', strtotime($locateDate));
//$locateDate = strtotime(date($locateDate));

echo $locateDate."<br>";
下一步:

$locateDate = $activeWorkRow['WorkDate'];
$locateDate = str_replace('/', '-', $locateDate);
$locateDate = date('m-d-Y', strtotime(locateDate));
//$locateDate = strtotime(date($locateDate));
输出:

9-24-2015 1:45:53 PM
12-31-1969
1443116753

我正在尝试获取unix时间戳,以便与其他用户进行比较。

如果您使用的是MySQL,您可以说:

mysql>选择UNIX_TIMESTAMP()


或者,如果需要指定日期的Unix戳时间,请尝试:

mysql>选择UNIX_时间戳('2016-01-01 12:00:00')


您的问题是
stru替换(“/”、“-”、$locateDate)。您的日期显示为
m/d/y
,替换后的日期将转换为
m-d-y

但是
strotime
-
视为欧洲
d-m-y
格式的指标。在该格式中,
9/24/2015
不是有效日期,导致您观察到的输出(等于
date('m-d-Y',0)

只需跳过
str\u replace

$activeWorkRow['WorkDate'] = "9/24/2015 1:45:53 PM";
$locateDate = $activeWorkRow['WorkDate'];
echo strtotime($locateDate);
输出:

9-24-2015 1:45:53 PM
12-31-1969
1443116753
有关更多详细信息和注意事项,请参阅:

m/d/y或d-m-y格式的日期通过查看 不同组件之间的分隔符:如果分隔符是 斜杠(/),则假定为美式m/d/y;然而,如果 分隔符是破折号(-)或点(.),然后是欧洲d-m-y格式 这是假定的。但是,如果年份以两位数格式给出,并且 分隔符为破折号(-),日期字符串解析为y-m-d


请注意,在显示这些时间戳时,您可能还需要考虑时区(
strotime
使用默认值,除非另有规定),但只要您只比较同一函数生成的时间戳,您就可以了。

您的服务器位于哪个时区?它是使用varchar而不是datetime存储的。我想这就是为什么我得到了一个0而不是它应该输出的值。您可以为此函数输入一个varchar:SELECT UNIX\u TIMESTAMP($activeWorkRow['WorkDate'))$timestamp=strottime($mysqltime);回显日期(“Y-m-dh:i:s”,$timestamp);