首页 > 解决方案 > 如何使用 PHP Carbon 格式化日期范围?

问题描述

PHP Carbon中是否有任何内置方法来格式化如下的日期范围?

$start_date = '2020-05-20';
$end_date = '2020-05-30';

// expected output 'May 20th-30th, 2020'

$start_date = '2019-10-24';
$end_date = '2019-11-02';

// expected output 'October 24th-November 2nd, 2019'

$start_date = '2019-12-25';
$end_date = '2020-01-03';


// expected output 'Desember 25th, 2019 - January 3rd, 2020'

还是我应该编写自己的逻辑来实现这一目标?

标签: phpphp-carbon

解决方案


@jspit answer的变体,它还允许每个案例有两个相同的日期和特定的分隔符。

        $formats = $formats ?? [
          '' => ['F j, Y','F j, Y', ' - '], //default
          'Y' => ['F j','F j, Y', ' - '],   // Y equal
          'Ym' => ['F j','j, Y', '-'],      // Y-m equal
          'Ymd' => ['F j, Y', '', ''],      // Y-m-d equal
        ];
        foreach($formats as $key => $curFormat){
          if($key == "" OR $start->format($key) == $end->format($key)){
            $format = $curFormat;
          }
        }
      return implode($format[2], [$start->format($format[0]), $end->format($format[1])] );

推荐阅读