PHP在date函数中设置时间


php set the time in the date function

希望这是一个简单的问题,但是我很难得到一个可预测的结果。我想要它的原因是向mongo数据库添加一个可比较的时间,该数据库将以秒为单位存储,但以格式化的时间字符串打印到屏幕上,以及将时间+持续时间作为格式化的时间字符串打印。在下面的例子中,开始时间应该是8:30am,结束时间应该是10:30am

<?php
function toTimeStamp($time){
    // 60 * 60 * 8.5
    // sec * min * $time
    return 60 * 60 * $time; 
}
function fromTimeStamp($sec){
    return date('g:ia', $sec); // HH:MMam/pm
}
$start = toTimeStamp(8.5); // 30600
$duration = toTimeStamp(2); // 7200
echo fromTimeStamp($start) . '<br>'; // 9:30am
echo fromTimeStamp($duration) . '<br>'; // 3:00pm
echo fromTimeStamp(($start + $duration)) . '<br>'; // 11:30pm

我觉得好像是时区问题。
试试这个:

function fromTimeStamp($sec){
    date_default_timezone_set('UTC');
    return date('g:ia', $sec); // HH:MMam/pm
}

根据http://us.php.net/manual/en/function.date-default-timezone-set.php:

date_default_timezone_set -设置脚本中所有日期/时间函数使用的默认时区

所以你可以把命令放在一个更方便的地方,而不是每次都被调用。

是date函数接受第二个参数作为时间戳(秒)