私のアプリケーションでは、特定の形式、すなわち'0000-04-12'(4月12日)の365日間、mysqlにvarcharフィールドがあります。今、私は、フィールドからの特定の日付が、2:00 pm、3月の第2日曜日、から、午後2時の、カルガリーカナダの夏時間帯にあるかどうかをチェックする機能を持っています。を返し、それに応じて真または偽を返します。PHPの夏時間計算
<?php
/*
@param $time form Database e.g. 0000-04-12
*/
function isDaylightSaving($time){
// to replace 0000 in start with current year
$today = substr_replace($time,date('Y'),0,4);
$date = new DateTime($today);
$week = $date->format('W');
// TO DO
// find date falls between 2:00 pm Second Sunday of March to 2:00 pm First Sunday of November.
return ;
}
?>
今のは、特定の年に関して週返すが、私は、私はget.Thanksすることができませんこれは、特定のロジックを実行するために、月に関して週をチェックする必要があります。
したがって、サーバーのデフォルトのタイムゾーンに依存していますか? MySQLで日付をどのように保存しますか? UTCとして、またはオフセットが存在しますか?また、[この質問と回答](http://stackoverflow.com/questions/21946276/php-daylight-savings-conundrum)をチェックしてください。 – Mjh
@Mjh私たちはDateTime initを見ることができるので、すべてのDateTimeは同じTZを持ちます。さらに、彼はここにTZインテルを持っていないようですので、提供された日付に応じて、DSTがアプライアンス内にあると想定することができます。 – Lpu8er
@Mjh utcで '0000-04-12'のような文字列形式ではないと特定の問題に固執イム。 –