【发布时间】:2016-11-22 14:02:52
【问题描述】:
我有一些静态文本文件需要解析。
在这些文件中,我的日期格式为Ymd、Ym、YmdHis 甚至His,但我可以管理。
问题(artisan tinker的输出):
>>> $date = \Carbon\Carbon::createFromFormat('Ymd', '20160415', 'UTC')
=> Carbon\Carbon {#1315
+"date": "2016-04-15 15:00:22.000000",
+"timezone_type": 3,
+"timezone": "UTC",
}
>>> $date->format('Ymd')
=> "20160415"
>>> $date = \Carbon\Carbon::createFromFormat('Ymd', '00000000', 'UTC')
=> Carbon\Carbon {#1076
+"date": "-0001-11-30 15:00:31.000000",
+"timezone_type": 3,
+"timezone": "UTC",
}
>>> $date->format('Ymd')
=> "-00011130"
当日期是正确的日期(示例中为 2016-04-14)时,一切正常,但是当我得到 零 日期并将其传递给 Carbon 时,它会将其更改为 -1 年 11 月 30 日
有没有办法教Carbon 在这种情况下如何表现?
【问题讨论】:
-
没有零月或零日,因此它将其解释为前一年的最后一个月,然后是前一个月的最后一天。你期待什么日期?
-
garbage in garbage out,在发送给 Carbon 之前确定日期
-
文件来自第三方,遗憾的是我无法修改它们的结构,也无法修改它们如何“可视化”空/未设置日期
-
"Is there a way to teach Carbon how to behave in situation like this?"应该如何表现? -
@vascowhite 就个人而言,我认为它应该向上或向下取整——也许是一个选择。我的偏好是四舍五入。例如。如果过去的日期为零,则它将成为本月的第一天,而不是上个月的最后一天
标签: php laravel date datetime php-carbon