0 レビュー
2 回答
datetime-phpでは夏時間がどのように機能しますか(phpとhhvmの違い)?
タイムスタンプが夏時間になっているかどうかを検出する必要があります。
このコードを使用して機能をテストしています:
<?php
date_default_timezone_set('Europe/Berlin');
$timestamp = $baseTimestamp = 1509234900; // Sunday, 29 October of 2017 1:55:00 GMT+02:00 DST
$date = (new DateTime)->setTimestamp($baseTimestamp);
echo "DateTime\t\t| Is in summer \t| Minutes passed\n";
for($i = 0; $i < 70; $i++) {
$date = (new DateTime)->setTimestamp($timestamp);
echo $date->format("Y-m-d H:i:s \t|I") . "\t\t| " . ($timestamp - $baseTimestamp)/60 . "\n";
$timestamp = $timestamp + 60;
}
Europe / Berlin と協力して、3月の2.00に冬から夏にかけて、phpが問題を解決するのを見てきましたが、10月になると予定されています。夏から冬にかけて3.00に戻ると、期待どおりに機能しません。
この場合、同じ時間に対応する2つのタイムスタンプがあります(3は2です)が、タイムスタンプは一意であるため、2.00の場合、夏時間と冬時間に1つのタイムスタンプが必要です。
hhvmを使用すると、正しい値が表示されますが、通常のphpインタープリターは、両方の2.00で夏ではないことを示しています(最初の値は午前2時、2番目の値は午前3時の午前2時です。これは1つです。つまり、もう夏ではないということです)
わからない
0
レビュー
答え :
解決策:
はい、PHPには長続きする未解決のDST関連のバグがいくつかあります。
あなたはこれをヒットしたようです: https://bugs.php.net/bug.php?id=68549
わからない
0
レビュー
答え :
解決策:
function isSummer($timestamp) {
$date = (new DateTime)->setTimestamp($timestamp);
if ($date->format('I') == 1) {
return true;
}
return ($date->getTimestamp() > $timestamp);
}
これでうまくいくと思います
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。