Php 碳中的零日期
我需要解析一些静态文本文件 在这些文件中,我的日期格式为Php 碳中的零日期,php,laravel,date,datetime,php-carbon,Php,Laravel,Date,Datetime,Php Carbon,我需要解析一些静态文本文件 在这些文件中,我的日期格式为Ymd,Ym,YmdHis甚至His,但我可以管理 问题(artisan tinker的输出): 当日期是一个合适的日期(示例中为2016-04-14)时,一切都很顺利,但当我得到一个零日期并将其传递给Carbon时,它将其更改为1年11月30日 有没有办法教你在这种情况下如何行事?你必须检查日期是否大于最小日期(Carbon::minValue()),并在必要时进行更正(例如,使其等于最小日期或可能将其设置为“从不”) >$date=\C
Ymd
,Ym
,YmdHis
甚至His
,但我可以管理
问题(artisan tinker的输出):
当日期是一个合适的日期(示例中为2016-04-14)时,一切都很顺利,但当我得到一个零日期并将其传递给Carbon
时,它将其更改为1年11月30日
有没有办法教你在这种情况下如何行事?你必须检查日期是否大于最小日期(
Carbon::minValue()
),并在必要时进行更正(例如,使其等于最小日期或可能将其设置为“从不”)
>$date=\Carbon\Carbon::createFromFormat('Ymd','00000000','UTC');
=>碳\碳@-62169953296{#3106
日期:-0001-11-30 08:31:44.0 UTC(+00:00),
时区:“UTC”,
}
>>>如果($date<\Carbon\Carbon::minValue())$date=\Carbon\Carbon::minValue();
=>碳\碳@-62135601840{#3125
日期:0001-01-01 00:00:00.0欧洲/华沙(+01:24),
时区:“欧洲/华沙”,
}
没有零月份或零日,因此它将其解释为前一年的最后一个月,然后是前一个月的最后一天。你期望什么日期?垃圾入垃圾出,在你发送给Carbon之前确定你的日期文件来自第三方,不幸的是我无法修改它们的结构,也无法“可视化”空/未设置日期“有没有办法教Carbon在这种情况下如何行为?”
它应该如何行为?@vascowhite个人,我认为它应该向上或向下——也许是一种选择。我倾向于集中注意力。例如,如果通过的日期为零,则它将成为当月的第一天,而不是上个月的最后一天
>>> $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"
>>> $date = \Carbon\Carbon::createFromFormat('Ymd', '00000000', 'UTC');
=> Carbon\Carbon @-62169953296 {#3106
date: -0001-11-30 08:31:44.0 UTC (+00:00),
timezone: "UTC",
}
>>> if ($date < \Carbon\Carbon::minValue()) $date = \Carbon\Carbon::minValue();
=> Carbon\Carbon @-62135601840 {#3125
date: 0001-01-01 00:00:00.0 Europe/Warsaw (+01:24),
timezone: "Europe/Warsaw",
}