2016-10-14 11 views
0

通常、通常の日に1440分(60分/時間* 24時間)があります。しかし、夏時間のために、1380分(60分/時間* 23時間)または1500分(60分/時間* 25時間)のいずれかがあります。与えられた日付の正確な分数の取得

phpのDateTimeオブジェクトで指定された日付の正確な分数はどのようにしてわかりますか?

たとえば、2016年3月13日にDSTが米国で開始され(したがって23時間)、2016年11月6日にDSTは米国で終了します(したがって、25時間の1日です)。 2016年5月1日は通常の24時間です。私は、次のことを返す機能を持っているしたいと思います:

$lomg= new DateTime('November 6, 2016T07:23:11'); 
$short= new DateTime('March 13, 2016T19:17:53'); 
$regular = new DateTime('May 1, 2016T22:45:00'); 

getMinutes($short); // Returns 1380 
getMinutes($long); // Returns 1500 
getMinutes($regular); // Returns 1440 
+1

まあ停止それらがすべてUTCに基づいているので、あなたがそれらを避けることができるならば、unixタイムスタンプを使ってください。実際にタイムゾーンを認識しているDateTimeオブジェクトの使用を開始する –

+0

現在有効なDSTは、** '(bool)$ dateTimeObject-> format( 'I')' **を使用して知ることができます。 –

+1

unixタイムスタンプにタイムゾーンデータが含まれていません。これはUTCであり、DST設定はありません。 内部的に正しいタイムゾーンに時刻(たとえば、DateTime()とDateTimeZone()クラスを使用)を変換し、日付に基づいてDSTとタイムゾーンオフセットを自動的に調整する必要があります。 –

答えて

0

次はず(原則として)仕事:

<?php 


$dt = new DateTime();  
$dt->setTimestamp(1457827200);  
$dt->modify("today"); //Set to 00:00:00 
$dt2 = clone $dt;  // Copy to new instance 
$dt2->modify("+1 day"); 

var_dump(($dt2->getTimestamp() - $dt->getTimestamp())/60); 

(フル免責事項、それをテストしていない)

関連する問題