Php strtotime和date输出不正确
我在回显数据库中保存的日期的正确unix时间戳时遇到问题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
$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);