如何从包含Carbon\Carbon对象的Collection中提取日期?
解决Carbon对象无法直接访问date属性的问题
嘿,我太懂你遇到的这个坑了——Carbon对象里的date属性是受保护的(protected),所以你没法直接通过$carbon->date来读取它。不过Carbon早就为我们准备了一堆好用的公共方法,完全没必要硬碰那个属性。
给你几个实用的解决方案:
获取和原date字段一致的完整日期时间字符串
用toDateTimeString()方法就能直接拿到Y-m-d H:i:s格式的字符串,和你看到的date字段内容一模一样:foreach ($yourCollection as $item) { // 假设你的数组键是'date',对应Carbon对象 $dateTime = $item['date']->toDateTimeString(); echo $dateTime; // 输出:2018-04-04 17:27:24 }自定义你需要的日期格式
如果只想要日期部分,或者需要特殊格式,用format()方法就行,支持所有PHP兼容的日期格式:foreach ($yourCollection as $item) { // 只提取日期 $onlyDate = $item['date']->format('Y-m-d'); // 输出:2018-04-04 // 带中文的自定义格式 $chineseDate = $item['date']->format('Y年m月d日 H时i分s秒'); // 输出:2018年04月04日 17时27分24秒 }用Carbon的快捷方法快速获取特定格式
Carbon还有很多预定义的快捷方法,帮你一步拿到想要的结果:$item['date']->toDateString(); // 仅返回日期:2018-04-04 $item['date']->toTimeString(); // 仅返回时间:17:27:24 $item['date']->toIso8601String(); // 返回ISO8601标准格式:2018-04-04T17:27:24Z
这些都是Carbon官方推荐的用法,既安全又符合规范,比硬访问受保护属性靠谱多啦~
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

