2016-10-14 18 views
0

正常情況下,正常情況下,通常會有1440分鐘(60分鐘/小時* 24小時)。但是,由於夏令時,可能需要1380分鐘(60分鐘/小時* 23小時)或1500分鐘(60分鐘/小時* 25小時)。獲取給定日期的確切分鐘數

如何提供一個PHP的DateTime對象時,如何找到給定日期的確切分鐘數?

例如,2016年3月13日,DST在美國開始(因此是23小時的一天),並且2016年11月6日DST在美國結束(因此是25小時的一天)。 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

嘛停止如果可以避免使用unix時間戳,因爲它們都基於UTC;並開始使用實際上可識別時區的DateTime對象 –

+0

DST當前是否有效可能知道使用**'(bool)$ dateTimeObject-> format('I')**。 –

+1

unix時間戳不包含任何時區數據。這是UTC並且沒有DST設置。 您應該將時間(例如,使用php中的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); 

(全部免責聲明,沒有測試)

相關問題