持续时长转类似ISO8601中文时间格式
/**
* 持续时长转类似ISO8601中文时间格式
* @param int $duration 持续时长(秒)
* @return string
*/
function seconds_to_iso8601(int $duration): string
{
$time = $duration;
$units = [
'年' => 3600 * 24 * 365,
'日' => 3600 * 24,
'时' => 3600,
'分' => 60,
'秒' => 1,
];
$rs = [];
foreach ($units as $name => $unit) {
if ($unit <= $duration) {
$quot = intval($time / $unit);
$time -= $quot * $unit;
if ($quot) {
$rs[] = $quot . $name;
}
}
}
return implode('', $rs);
}
将ISO 8601格式:PnYnMnDTnHnMnS,转换成秒
/**
* 将ISO 8601格式:PnYnMnDTnHnMnS,转换成秒
* @param string $str
* @return float|int|bool
*/
function ISO8601_to_seconds(string $str = 'PT1H59M')
{
try {
$dv = new \DateInterval($str);
return ($dv->y * 31536000) +
($dv->m * 2592000) +
($dv->d * 86400) +
($dv->h * 3600) +
($dv->i * 60) +
$dv->s;
} catch (\Exception $ex) {
// 报错
#todo...
return false;
}
}
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/499/
转载时须注明出处