PHP Carbon将分钟数转换为天数

5
我正在尝试使用Carbon将分钟数转换为天数。
$minutes = 1400;

我想做如下的事情(当然,以下操作是不可行的):
Carbon->minutes($minutes)->days();

我找不到这方面的例子,谢谢您的帮助。
4个回答

8

虽未经过测试,但快速查看文档表明它可能更适用于DateTime对象而非时间差,因此您可以这样做:

$now  = Carbon::now();
$days = $now->diffInDays($now->copy()->addMinutes($minutes));

4
也许可以使用 CarbonInterval::minutes($minutes)->cascade(); ?这将会对你的数值进行级联处理,并为人类阅读格式化。

2

如果你想把秒转换成Jira风格的1年 1月 1周 1小时 1分钟 1秒

class Translator implements TranslatorInterface, TranslatorBagInterface
{
    protected const TRANS = [
        'year'   => 'y',
        'month'  => 'm',
        'week'   => 'w',
        'day'    => 'd',
        'hour'   => 'h',
        'minute' => 'm',
        'second' => 's',
    ];

    public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null)
    {
        return $parameters[':count'].self::TRANS[$id];
    }

    public function getCatalogue(string $locale = null)
    {
        return new \Symfony\Component\Translation\MessageCatalogue('pl_PL');
    }
}

$second = 1;
$minute = 60 * $second;
$hours  = 60 * $minute;
$day    = 24 * $hours;
$week   = 7  * $day;
$month  = 4  * $week;
$year   = 12 * $month;

$sum      = $second + $minute + $hours + $day + $week + $month + $year;
$interval = CarbonInterval::seconds($sum)->cascade();

$interval->setLocalTranslator(new Translator());
echo $interval->forHumans(); // 1y 1m 1w 1h 1m 1s

1
如果您想将时间转换为年、月、周、日、小时、分钟、秒和微秒。
use Carbon\CarbonInterval;
echo CarbonInterval::minutes(2212)->cascade()->forHumans();

//output  = 1 day 12 hours 52 minutes


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接