首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >strtotime和date不能正确输出

strtotime和date不能正确输出
EN

Stack Overflow用户
提问于 2016-08-30 03:12:21
回答 2查看 173关注 0票数 5

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

代码语言:javascript
复制
$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>";

输出:

代码语言:javascript
复制
9-24-2015 1:45:53 PM

接下来:

代码语言:javascript
复制
$locateDate = $activeWorkRow['WorkDate'];
$locateDate = str_replace('/', '-', $locateDate);
$locateDate = date('m-d-Y', strtotime(locateDate));
//$locateDate = strtotime(date($locateDate));

输出:

代码语言:javascript
复制
12-31-1969

我正在尝试获取unix时间戳,这样我就可以将其与其他时间戳进行比较。

EN

回答 2

Stack Overflow用户

发布于 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

代码语言:javascript
复制
$activeWorkRow['WorkDate'] = "9/24/2015 1:45:53 PM";
$locateDate = $activeWorkRow['WorkDate'];
echo strtotime($locateDate);

输出:

代码语言:javascript
复制
1443116753

请参阅the manual了解更多详细信息和注意事项:

通过查看各个组件之间的分隔符,可以消除m/d/y或d-m-y格式中的

日期的歧义:如果分隔符是斜杠(/),则假定为美国的m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲的d-m-y格式。但是,如果年份是以两位数字格式给出的,并且分隔符是破折号(-,则日期字符串将解析为y-m-d。

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

票数 2
EN

Stack Overflow用户

发布于 2016-08-30 04:14:42

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

选择mysql> UNIX_TIMESTAMP();

代码语言:javascript
复制
<?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');

代码语言:javascript
复制
<?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>";  
}  
?>  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39213507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档