你如何从年初计算小时PHP

问题描述:

我只是想知道你怎么从今年年初在PHP 7.1你如何从年初计算小时PHP

这是一个倒计时钟是精确计算时间

+0

谷歌php时差(小时) – scaisEdge

+0

你看过http://carbon.nesbot.com? – Mike

+1

PHP5.1不完全是你的事情的出血边缘。这不符合你的SO手柄。也许'Last Millenia Software'会更合适 – RiggsFolly

你可以这样做:

$diff = date_create()->diff(new DateTime("first day of January ".date("Y"))); 
$hours = $diff->format("%a")*24 + $diff->h; 

如这里要求的处理夏令时的方式:

$transitions = (new DateTimeZone(date_default_timezone_get()))->getTransitions(); 

$thisYearsTransitions = array_values(array_filter($transitions, function ($v) { 
    return substr($v["time"],0,strlen(date("Y"))) == date("Y"); 
})); 
if (count($thisYearsTransitions) == 2 && date_create($thisYearsTransitions[0]) < date_create() && count($thisYearsTransitions)>0 && date_create($thisYearsTransitions[1]) > date_create()) { 
    $hours = $hours + ($thisYearsTransitions[0]["offset"]-$thisYearsTransitions[1]["offset"] > 0?1:-1); 
} 

这样做会得到今年的DST转换,如果当前日期在第一次和第二次转换之后下降,它将增加/减少一小时(取决于时区)。不知道这是否会奏效,还没有测试过,但它应该。

+0

,但这是PHP 5.3 +。 TS使用5.1 –

+0

@IvoP我认为你是 – apokryfos

+1

后面的更新啊:我看到TS将他的php从5.1升级到7.1分钟前 –