2016-08-05 14 views
0

ちょっと夏に指定された日付の場合にtrueを返すスクリプトをコーディングしたかったのです。だから私はPHPのdocumentationの日付( "stuff" mktime)を見つけました。そして、パラメータ文字列のリストがあります。そこにそれは言う:"I (capital i) Whether or not the date is in daylight saving time"。私は私のスクリプトでこれを書いた理由です"I"(サマータイムオプション)でmktimeを使用するには?

echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000)); 

:I以下のいくつかの行は、この例で見つかった私が入れ

function summertime(string $date) : bool { 
    $pieces = explode('-', $date); 
    $year = (int) $pieces[0]; 
    $month = (int) $pieces[1]; 
    $day = (int) $pieces[2]; 

    return date("I", mktime(0, 0, 0, $month, $day, $year)); 
} 

echo summertime("1981-07-07"); 

どんなにのウィッヒ日は、それは常にfalse/0いままで返しませんが...私は違いや間違いを見つけることができません... FYI:私はPHP 7.0を使用しています

+1

は、例えばタイムゾーンを設定してみてください'date_default_timezone_set'を使用します。現在のデフォルトのタイムゾーンは、夏時間がまったくない時間帯(たとえば、UTC)です。 –

答えて

1

Markus Laireのコメントに記載されているように、おそらくあなたのタイムゾーンを正しく設定する必要があります。また、DateTimeクラスの使用をお勧めします。新しい日付を作成する際に、特定のタイムゾーンを設定する方法を示し、以下の実施例:

例1:

$tz = new DateTimeZone('Europe/Berlin'); 
$date = new DateTime('1981-07-07', $tz); 
echo $date->format('I'); 
// outputs '1' 

例2:

$tz = new DateTimeZone('Europe/Berlin'); 
$date = new DateTime('1981-01-01', $tz); 
echo $date->format('I'); 
// outputs '0' 
関連する問題