字符串日期范围

时间:2019-11-18 11:12:05

标签: php date php-carbon

我有一个日历系统,因此活动有一个start和一个end日期。像任何日历一样,end日期是可选的,也可以与start日期相同,但时间不同。

因此,根据日期,有多种组合可以向人类显示(例如Google日历或Apple日历等):

  • 2019年1月1日
  • 2019年1月1日在08:12
  • 2019年1月1日在08:12至11:45
  • 2019年1月1日至2019年2月3日
  • 2019年1月1日10:15至2019年2月3日18:20

Php-Carbon是否有内置方法可以做到这一点?我只找到格式化一个日期的方法,但未找到间隔/期间的方法。谢谢

3 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则可以执行以下操作:

$period = CarbonPeriod::create($start, $end);

然后,您可以在这段时间内进行迭代,并随心所欲地做

它是在Carbon 1.29中添加的

答案 1 :(得分:0)

请参考以下代码...

printf("Right now is %s", Carbon::now()->toDateTimeString());
printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string
$tomorrow = Carbon::now()->addDay();
$lastWeek = Carbon::now()->subWeek();

// Carbon embed 824 languages:
echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');
echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');

$officialDate = Carbon::now()->toRfc2822String();

$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;

$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');

$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');

if (Carbon::now()->isWeekend()) {
    echo 'Party!';
}
echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

答案 2 :(得分:0)

我理解这个问题,因此只需将差异格式化:

$start = new Carbon('1 jan 2019 08:12');
$end = new Carbon('today');

echo $start->diffForHumans($end);
//10 months before