您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
Laravel日期时间处理(利用laravel11的第三方Carbon计算两日期时间相差天数(包含正负天数))
发布时间:2024-11-11 18:07:12编辑:雪饮阅读()
-
日期时间处理laravel11中使用了Carbon库。
其文档可以访问这里查看
https://carbon.nesbot.com/docs/
可以利用Carbon库创建当前时间并支持php内部的date格式化参数
$now=Carbon::now();
$currentDateStr=$now->format("Y-m-d H:i:s");
那么关于日期时间的处理有很多繁杂的属性和方法,没有必要一一介绍。
这里就以一个典型的例子,计算时间差为例。
计算时间差,假如我想要计算两个日期时间之间的时间差,而且我希望时间差直接有正数时间差,也有负数时间差,并且我希望是以天数为单位。
首先我们建立第一个操作变量
$dt1 = Carbon::createMidnightDate($now->year, $now->month, $now->day);
$dtStr=$dt1->format("Y-m-d H:i:s");
其实这里year,month,day都是可以不用传递的,形参默认值为null,那么我认为应该是按当前时间计算的,另外就是还有timezone参数,也有默认形参值null。
那么实际情况是当你需要做时间国际化的应用时候就有可能需要考虑下时区参数了。
接下来我们建立第二个日期时间操作数,我们可以不用上面这么麻烦了,直接基于上面进行对时间的操作,比如加一个月,然后再加一个小时。
$dt2=$dt1->copy()->addMonth()->addHour();
$dt2Str=$dt2->format("Y-m-d H:i:s");
然后比较时间差,我们用小的时间去比对大的时间,也可以用大的时间去比较小的时间
$dt1_dt2_difference = $dt1->diffInDays($dt2);
$dt2_dt1_difference = $dt2->diffInDays($dt1);
这里第一个时间操作变量进行diffInDays的时候是计算该时间变量差于diffInDays接收的这个时间操作变量。也即就是默认把diffInDays函数所属对象作为日期时间较小者,去计算时间较小者差于时间较大者的差数。
这里假定我们响应于上篇中的Dashboard控制器的statistics方法中
return [
"finishUserTask"=>$finishUserTask,
"unfinishedUserTask"=>$unfinishedUserTask,
"difference"=>[
"currentDateStr"=>$currentDateStr,
"dtStr"=>$dtStr,
"dt2Str"=>$dt2Str,
"dt1_dt2_difference"=>$dt1_dt2_difference,
"dt2_dt1_difference"=>$dt2_dt1_difference
]
];
可以看到结果中正好是有正负数,相差一个月的天数,也符合我们的逻辑。
本期词汇
Carbon 碳;复写纸
minute 分,分钟
Subtraction 减,减法
关键字词:laravel,laravel11,日期,时间,Carbon,相差,天数
相关文章
- Laravel中文(多语言)显示(laravel11+inertia的本地化实
- 自定义分页参数及Tab页动态切换(laravel11+inertia实
- 虚拟数据填充及同一页面多个分页问题(laravel11+inert
- 列出当前用户的所有Task(laravel11集成Element plus T
- 删除Task相关的逻辑及权限验证(laravel11中的事务与针
- TaskController重构到repo中(解决队列的delay无效问题
- 编辑Task相关的数据验证及权限(laravel11队列关联用户
- Task编辑保存相关的逻辑(laravel11表单请求的验证消息
- Task标记完成的逻辑、新建Task相关的数据验证及权限(la
- 列出已完成和未完成的Task(laravel11队列中job完成的a