我在回显保存在数据库中的日期的正确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时间戳,这样我就可以将其与其他时间戳进行比较。
发布于 2016-08-30 06:49:39
你的问题是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格式中的
日期的歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲的d-m-y格式。但是,如果年份是以两位数字格式给出的,并且分隔符是破折号(-,则日期字符串将解析为y-m-d。
请注意,在显示这些时间戳时,您可能还需要考虑时区(strtotime使用默认值,除非另有指定),但只要您只比较由同一函数生成的时间戳,就不会有问题。
发布于 2016-08-30 04:14:42
如果你使用的是MySQL,你可以说:
选择mysql> 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>选择UNIX_TIMESTAMP('2016-01-01 12:00:00');
<?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>";
}
?> https://stackoverflow.com/questions/39213507
复制相似问题