Carbon将天数转换为人类可读的格式

时间:2018-11-09 16:23:54

标签: php laravel laravel-5 php-carbon

我需要将30天转换为1个月。如果用月份和天为单位,则类似于1年2个月2天 我在下面尝试过,但是会返回错误的结果

 echo CarbonInterval::days(30)->cascade()->forHumans();

任何人都可以帮助我实现这一目标吗?

我尝试了以下解决方案,但相差仅2天

$convert = '30'; // days you want to convert

    $years = ($convert / 365) ; // days / 365 days
    $years = floor($years); // Remove all decimals

    $month = ($convert % 365) / 30.5; // I choose 30.5 for Month (30,31) ;)
    $month = floor($month); // Remove all decimals

    $days = ($convert % 365) % 30.5; // the rest of days

    // Echo all information set
    echo 'DAYS RECEIVE : '.$convert.' days<br>';
    echo $years.' years - '.$month.' month - '.$days.' days';

使用碳有什么好的解决方法

1 个答案:

答案 0 :(得分:1)

是否必须是CarbonInterval?

Carbon::now()->subDays(1827)->diffForHumans()呢?

它不起作用的原因(来自https://carbon.nesbot.com/docs/#api-interval):

  

默认因素是:

     
      
  • 1分钟= 60秒
  •   
  • 1小时= 60分钟
  •   
  • 1天= 24小时
  •   
  • 1周= 7天
  •   
  • 1个月= 4周
  •   
  • 1年= 12个月
  •   
     

CarbonIntervals不携带上下文,因此它们不能更精确   (无DST,无leap年,无实际月份长度或年份长度   考虑)。