openweather unix datetimestamp для локального datetime в php - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь преобразовать дату и время восхода и заката unix эпохи, предоставленную вызовом API Openweather, в мою локальную дату и время. И я получаю действительно несоответствующие результаты. Значение восхода солнца составляет 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. Или, может быть, я неправильно конвертирую его или неправильно читаю результаты?

С уважением,

Ochen

1 Ответ

0 голосов
/ 14 июля 2020

Метка времени всегда в UT C, поэтому вам нужно преобразовать ее в локальную зону, например:

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