如何通过 Carbon API 扩展将大于 86400 的时间(以秒为单位)转换为人类可读的时间
How to convert time in seconds Larger than 86400 to human readable by Carbon API extension
我使用了这个问题的认可答案,但是 carbon 没有正确计算时间。
为什么以下代码的输出不同?
$sec = 17279645;
Carbon::now()->addSeconds($sec)->diffForHumans(false, ['parts' => 5]);
CarbonInterval::seconds($sec)->cascade()->forHumans();
"6 months 2 weeks 3 days 54 minutes 4 seconds after"
"7 months 3 days 23 hours 54 minutes 5 seconds"
CarbonInterval::cascade() 使用简单的静态因子:
[
'milliseconds' => [1000, 'microseconds'],
'seconds' => [1000, 'milliseconds'],
'minutes' => [60, 'seconds'],
'hours' => [60, 'minutes'],
'dayz' => [24, 'hours'],
'weeks' => [7, 'dayz'],
'months' => [4, 'weeks'],
'years' => [12, 'months'],
]
相同的秒数总是给出相同的输出。
虽然 diffForHumans
考虑了“现在”,但月份实际上有 28 天、30 天或 31 天,(如果你的时间间隔有夏令时,一天可以是 25 小时等)所以是一样的秒数根据当前时间为您提供可变输出。
关于 1 秒的差异,这是因为在您执行 Carbon::now()
的那一刻和您执行 diffForHumans()
的那一刻之间经过了几微秒。所以你的间隔实际上是 17279644.987 而不是 17279645.
我使用了这个问题的认可答案,但是 carbon 没有正确计算时间。
为什么以下代码的输出不同?
$sec = 17279645;
Carbon::now()->addSeconds($sec)->diffForHumans(false, ['parts' => 5]);
CarbonInterval::seconds($sec)->cascade()->forHumans();
"6 months 2 weeks 3 days 54 minutes 4 seconds after"
"7 months 3 days 23 hours 54 minutes 5 seconds"
CarbonInterval::cascade() 使用简单的静态因子:
[
'milliseconds' => [1000, 'microseconds'],
'seconds' => [1000, 'milliseconds'],
'minutes' => [60, 'seconds'],
'hours' => [60, 'minutes'],
'dayz' => [24, 'hours'],
'weeks' => [7, 'dayz'],
'months' => [4, 'weeks'],
'years' => [12, 'months'],
]
相同的秒数总是给出相同的输出。
虽然 diffForHumans
考虑了“现在”,但月份实际上有 28 天、30 天或 31 天,(如果你的时间间隔有夏令时,一天可以是 25 小时等)所以是一样的秒数根据当前时间为您提供可变输出。
关于 1 秒的差异,这是因为在您执行 Carbon::now()
的那一刻和您执行 diffForHumans()
的那一刻之间经过了几微秒。所以你的间隔实际上是 17279644.987 而不是 17279645.