php - 如何使用 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'
还是我应该编写自己的逻辑来实现这一目标?
解决方案
@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])] );
推荐阅读
- c# - 你调用的对象是空的。实体与参数
- macos - 在 MacOS 上找不到路径项的来源
- dfsort - 比较两个文件,然后匹配和 umtached 记录以复制两个差异文件
- android - 即使关闭 WebView 应用程序,我也需要保持登录(android)
- bcnf - 用算法将模式分解为 BCNF
- debugging - Ionic 2 - 移动应用程序 - RAM Dump 显示所有 API 调用的列表
- yocto - Yocto:INITSCRIPT_PARAMS 无法按预期工作
- machine-learning - 神经网络可以输出大于 1 的数字吗?
- html - 如何在Angular中将空的必填输入字段警报颜色显示为蓝色?
- azure-cosmosdb - 每次插入新文档时更新另一个集合