我无法为数据库中保存的日期回显正确的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时间戳,以便将其与其他人进行比较。
答案 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>";
}
?>