date从未知格式解析正确的日期

时间:2017-12-20 11:14:21

标签: php date php-carbon

我从文档中提取日期。日期的格式各不相同,从美国到欧洲,从破折号到反斜杠。

$d1 = '03/12/2017';
$d2 = '12/03/2017';
$d3 = '26/03/2017';


Carbon::parse($d1)->toDateString(); // the month is read as March but it should be read as December
Carbon::parse($d2)->toDateString(); // the month is read as December but it should be March
Carbon::parse($d2)->toDateString(); // throws an ErrorException failing to parse the time due to incorrect format

问题是不知道日期是d / m / Y还是m / d / Y导致文件按错误的月份排序。

这些文件来自世界各地的不同企业,我无法控制日期格式。

这个问题有解决方法吗?

1 个答案:

答案 0 :(得分:1)

您应该使用createFromFormat请参阅http://carbon.nesbot.com/docs/#api-instantiation

Carbon::createFromFormat("d/m/Y",$datestring)

这样就可以定义字符串的解释方式,如果你知道输入字符串是什么。

Carbon扩展了php的DateTime课程,因此您也可以阅读https://secure.php.net/manual/en/datetime.createfromformat.php上的DateTime createFromFormat文档