简体   繁体   English

PHP Carbon 需要几分钟并转换为天

[英]PHP Carbon take number of minutes & convert to days

I am trying to convert a number on minutes into number of days using Carbon.我正在尝试使用 Carbon 将分钟数转换为天数。

$minutes = 1400;

I want to do something like below (which of course, does not work):我想做类似下面的事情(当然,这不起作用):

Carbon->minutes($minutes)->days();

I cannot find an example of this.我找不到这样的例子。 Thanks for any help.谢谢你的帮助。

Not tested, but a quick look at the docs suggests it might be aimed more at DateTime objects than differences in time, so you could do something like this: 未经测试,但快速浏览文档表明它可能更多地针对DateTime对象而不是时间差异,因此您可以执行以下操作:

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

If you want to convert seconds to Jira style 1y 1m 1w 1h 1m 1s :如果要将秒转换为 Jira 样式1y 1m 1w 1h 1m 1s

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

Maybe CarbonInterval::minutes($minutes)->cascade(); 也许CarbonInterval::minutes($minutes)->cascade(); ?

Will cascade down your value and format it for humans. 将降低您的价值并将其格式化为人类。

if you want to convert to years, months, weeks, days, hours, minutes, seconds, microseconds如果要转换为年、月、周、日、小时、分钟、秒、微秒

use Carbon\CarbonInterval;
echo CarbonInterval::minutes(2212)->cascade()->forHumans();

//output  = 1 day 12 hours 52 minutes

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM