У меня проблема с библиотекой Carbon на PHP, когда я изменяю день (сохранение дневного света) в часовом поясе Великобритании, я использую версию Carbon: 1.31.0, версию PHP: 5.6.11 на Laravel 5.5
это моя функция, конвертируемая в startOfHour:
public function getStartHour($timestamp)
{
$carbonDate = Carbon::createFromTimestamp($timestamp, 'Europe/London');
$startHour = $carbonDate->startOfHour()->timestamp;
return $startHour;
}
// Case 1:
// Sunday October 27, 2019 00:00:00 (am) GMT
// Sunday October 27, 2019 01:00:00 (am) (Timezone + 1 , On daylight saving)
$time = $this->getStartHour(1572134400); // 1572138000 (Issue here)
//My expected: 1572134400
// Case 2:
// Sunday October 27, 2019 00:30:00 (am) GMT
// Sunday October 27, 2019 01:30:00 (am) (Timezone + 1 , On daylight saving)
$time = $this->getStartHour(1572136200); // 1572138000 (Issue here)
//My expected: 1572134400
// Case 3:
// Sunday October 27, 2019 01:00:00 (am) UCT
// Sunday October 27, 2019 01:00:00 (am) UK (Timezone + 0)
$time = $this->getStartHour(1572138000); // 1572138000 - 01:00:00 (Ok)
// Case 4:
// Sunday October 27, 2019 01:30:00 (am) UTC
// Sunday October 27, 2019 01:00:00 (am) (Timezone + 0)
$time = $this->getStartHour(1572139800); // 1572138000 - 10:00:00 (Ok)
4, если они возвращают один и тот же результат (1572138000).Это не совсем так в реальном случае.
Но когда я использую библиотеку MomentJs, она конвертируется правильно, как и ожидалось. Вот мой код Js с Moment
function getStartHour (timestamp) {
const m = moment(timestamp * 1000).tz('Europe/London');
startHour = m.clone().startOf('hour').unix()
return startHour;
}
Чем отличается библиотека 2 и как можноЯ исправляю код PHP и возвращаю тот же код JS.Большое спасибо.