您如何计算 PHP 从年初开始的小时数
How do you Calculate Hours from the Beginning of the Year in PHP
我只是想知道在 PHP 7.1
中如何计算从年初开始的小时数
这是一个精确的倒计时时钟
你可以这样做:
$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 转换,如果当前日期在第一次转换之后和第二次转换之前,它将 add/subtract 一个小时(取决于时区)。不确定这是否可行,还没有测试过,但应该可以。
我只是想知道在 PHP 7.1
中如何计算从年初开始的小时数这是一个精确的倒计时时钟
你可以这样做:
$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 转换,如果当前日期在第一次转换之后和第二次转换之前,它将 add/subtract 一个小时(取决于时区)。不确定这是否可行,还没有测试过,但应该可以。