首页 > 解决方案 > openweather unix datetimestamp to local datetime in php

问题描述

我正在尝试将 Openweather API 调用提供的日出和日落 unix 纪元日期时间戳转换为我的本地日期时间。我得到了真正的差异结果。日出值为 1594726338,日落值为 1594775338。但是,当我将其转换为本地日期时间时,日出值为 2020-07-14 17:02:18,日落值为 2020-07-15 06:38 :58,完全偏离目标。我尝试在在线日期/时间转换器网站上查找它,它们返回相同的结果。首先我尝试了这个:

*

<?php
    $uep=1594726338;
    $t = date('r',$uep);
?>

然后我尝试了这个:

<?php

    $uep=1594726338;
    $t = date('r',$uep);
    $savedtime = $t;
    $servertime = ini_get('date.timezone');
    $time = strtotime($savedtime . $servertime);
    $dateInLocal = date("Y-m-d H:i:s", $time);
    echo $dateInLocal;
?>

我在 php.ini 文件中设置了正确的日期时间。我还阅读了一些关于将 unix 纪元除以 1000 的内容。或者我没有正确转换它或误读结果?

问候,

奥臣

标签: phpapidatetime-formatopenweathermap

解决方案


时间戳始终为 UTC,因此您需要将其转换为本地区域,例如:

$ts = 1560281377;
$dt = new DateTime('@' . $ts);
$dt->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $dt->format('Y-m-d H:i:s');

推荐阅读