从PHP中的时间戳获取时间

时间:2014-06-02 11:10:45

标签: php

我正在使用Forecast.io天气API来获取天气数据。当我显示该位置的日出和日落时间时,我有一点问题。

它给出了时间戳格式的时间也提供了偏移小时差异所以我做了以下代码来获取时间

//following GMT value or offset get from api
$offsetHours = '-5 hours';
// This time i get from api
$currentValue = '1401705628'; 
$actualTimeStamp = strtotime($offsetHours,$currentValue);
echo $actualTimeStamp;
echo date('h:i A',$actualTimeStamp);

最后的回音时间是我得到的'上午5:40'的实际时间 但是在某些php版本中它会给出错误的结果。

所以还有其他方法可以做到这一点我无法更新我的php版本

3 个答案:

答案 0 :(得分:0)

date('h:i A', (time()-(60*60*5)));

答案 1 :(得分:0)

gmdate('Y-m-d H:i:s', strtotime ('+1 hour'))你可以像你想要的那样灵活,你想要前进或后退几个小时,即 - (1小时)。但必须使用strtotime PHP函数:)

答案 2 :(得分:0)

您是否尝试过使用php的\ DateTime对象? 尝试这样的事情:

$currentValue = '1401705628';
$offsetHours = '-5 hours';

//Create DateTime Object With Date = NOW()
$date = new \DateTime();

//set Timestamp to DateTime Object
$date->setTimestamp($currentValue);

//Its the date from the timestamp
echo $date->format('h:i A') . '<br><br>';



$pattern = '/^([\+|\-]?)(\d+)\s(hours|hour|minutes|minute)$/iU';
$match = array();

if (preg_match($pattern, $offsetHours, $match)){
    //$match contains an array of matching elements of the pattern
    // $match[0] = '-5 hours'
    // $match[1] = '-'
    // $match[2] = '5'
    // $match[3] = 'hours'

    //Creating the DateInterval String
    $intervalStr = 'PT' . $match[2] . strtoupper(substr($match[3], 0, 1));
    // Create an object of the DateInterval
    $dateInterval = new \DateInterval($intervalStr);

    if ($match[1] === '-'){
        //Substract the DateInterval from Date
        $date->sub($dateInterval);
    }
    else {
        //Add the Dateinterval to date
        $date->add($dateInterval);
    }
} //if preg_match


//Its the date with the offset
echo $date->format('h:i A');

编辑:: 我已更新我的示例以动态解决时间偏移