strtotime和日期输出不正确

时间:2016-08-29 19:12:21

标签: 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 = strtotime(date($locateDate));

echo $locateDate."<br>";

输出:

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));

输出:

12-31-1969

我正在尝试使用unix时间戳,以便将其与其他人进行比较。

2 个答案:

答案 0 :(得分:2)

您的问题是str_replace('/', '-', $locateDate);。您的日期为m/d/y,如果您的日期已将其转换为m-d-y

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

只需跳过str_replace

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

输出:

1443116753

比照。 the manual了解更多详情和注意事项:

  

通过查看,可以消除m / d / y或d-m-y格式的日期   各个组件之间的分隔符:如果分隔符是a   斜线(/),然后是美国m / d / y;而如果   separator是短划线( - )或点(。),然后是欧洲d-m-y格式   假设。但是,如果年份是以两位数格式给出的   分隔符是破折号( - ,日期字符串被解析为y-m-d。

请注意,在显示这些时间戳时,您可能还需要考虑时区(strtotime使用默认值,除非另有说明),但只要您只比较同一函数生成的时间戳,就应该没问题

答案 1 :(得分:0)

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

的MySQL&GT; SELECT UNIX_TIMESTAMP();

<?php  
$hostname="your_hostname";  
$username="your_username";  
$password="your_password";  
$db = "your_dbname";   
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);  
foreach($dbh->query('SELECT UNIX_TIMESTAMP()') as $row) {  
    echo "<tr>";  
    echo "<td>" . $row['UNIX_TIMESTAMP()'] . "</td>";   
    echo "</tr>";  
}  
?>

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

的MySQL&GT; SELECT UNIX_TIMESTAMP(&#39; 2016-01-01 12:00:00&#39;);

<?php  
$hostname="your_hostname";  
$username="your_username";  
$password="your_password";  
$db = "your_dbname";  
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);  
foreach($dbh->query('SELECT UNIX_TIMESTAMP("2016-01-01 12:00:00")') as $row) {  
    echo "<tr>";  
    echo "<td>" . $row['UNIX_TIMESTAMP("2016-01-01 12:00:00")'] . "</td>";  
    echo "</tr>";  
}  
?>