如何评估PHP中的时间戳?

时间:2012-02-19 01:18:58

标签: php mysql timestamp

有一段时间我一直在使用原始的MySQL NOW()函数来记录我的MySQL数据库中的时间/日期,直到我意识到主机的时区变量比PST快三个小时。我已经使用DATE_SUB(NOW(), INTERVAL 3 HOUR)解决了这个问题,但现在我有大量的时间戳提前三个小时,所有未来的时间戳都显示正确的时间。

是否有一个PHP函数来评估在我修复之前记录的时间戳,这样我可以在管理实用程序中显示时将它们抵消?

例如:

if($timestamp < 2012-02-16 21:57:18) {
    $timestamp - 3 hours;
}

3 个答案:

答案 0 :(得分:1)

魔法功能strtotime为你完成所有工作。认真检查它是否可以添加,操作甚至阅读人类可读的日期形式。然后date函数可以将其格式化为任何形式。

答案 1 :(得分:1)

新时间戳(落后3小时)

$timestamp = date('Y-m-d H:i:s',strtotime($row['timestamp_column_name'])-(3*60*60));

在表中创建第二列(可能?)并存储偏移时间 - 也许称之为管理时间或存储系统时间的管理时间偏移量或者您可以使用类似选项的设置来设置PHP应该使用的时区这里提到:PHP timezone not set

答案 2 :(得分:0)

对于许多输入格式,strtotime是可行的方法。但是,其启发式方法可能会导致令人惊讶的结果,因此如果您只想解析特定格式,请使用strptime