Php 日期范围为人类字符串
我有一个日历系统,因此事件有一个Php 日期范围为人类字符串,php,date,php-carbon,Php,Date,Php Carbon,我有一个日历系统,因此事件有一个开始和一个结束日期。与任何日历一样,结束日期是可选的,也可以与开始日期相同,但时间不同 因此,根据日期,有多种组合可供人类显示(如谷歌日历或苹果日历等): 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中有内置的方法来实现这一点吗?我只找到格式化一个日期的方法,而不是间隔/期间。谢谢如果我正确
开始
和一个结束
日期。与任何日历一样,结束
日期是可选的,也可以与开始
日期相同,但时间不同
因此,根据日期,有多种组合可供人类显示(如谷歌日历或苹果日历等):
- 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中有内置的方法来实现这一点吗?我只找到格式化一个日期的方法,而不是间隔/期间。谢谢如果我正确理解了你的问题,你可以这样做:
$period = CarbonPeriod::create($start, $end);
然后,您可以迭代周期,并使用它执行任何您想要的操作
这是在碳1.29中添加的,请参阅以下代码
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'
我理解这个问题,因此应该简单地将差异格式化:
$start = new Carbon('1 jan 2019 08:12');
$end = new Carbon('today');
echo $start->diffForHumans($end);
//10 months before
为什么不干脆
$start->format(…)。'到'去'$结束->格式(…)
?因为您可以有一个相同的开始和结束日期,但时间不同,并且您将拥有2019年1月1日08:12至11:45的。现在我使用一个自定义方法来执行所有这些检查,但我想知道是否有一种内置的方式让我错过了足够的时间,但我在文档中没有看到任何这样的东西。我倾向于像你一样写包装纸。这可能是目前唯一的好办法。