Php 如何解释Carbon/Laravel中不一致的日期格式?

Php 如何解释Carbon/Laravel中不一致的日期格式?,php,laravel,date,php-carbon,Php,Laravel,Date,Php Carbon,我继承了一个使用以前属于Rails应用程序的数据库的Laravel5应用程序。因此,在日期列(在处创建,在处更新等)中,日期格式不一致,考虑到拉拉威尔的碳整合,我试图确定如何解释这一点 Rails应用程序存储的日期如下:2017-01-17 23:02:51+00 Laravel应用程序包含微秒,因此日期如下:2017-01-17 23:02:51.451741+00 问题在于,Laravel通过Carbon运行其所有日期函数,Carbon根据全局$dateFormat解析这些函数,导致Rail

我继承了一个使用以前属于Rails应用程序的数据库的Laravel5应用程序。因此,在日期列(
处创建,
处更新等)中,日期格式不一致,考虑到拉拉威尔的碳整合,我试图确定如何解释这一点

Rails应用程序存储的日期如下:
2017-01-17 23:02:51+00

Laravel应用程序包含微秒,因此日期如下:
2017-01-17 23:02:51.451741+00

问题在于,Laravel通过Carbon运行其所有日期函数,Carbon根据全局
$dateFormat
解析这些函数,导致Rails生成的日期抛出以下错误:

发现意外数据。数据丢失

我的第一个想法是尝试检测模型级别是否存在微秒,如果不存在,则将
.000000
添加到日期字符串中,以使Carbon播放效果良好,数据保持完整

不幸的是,用
$this->created_在
上获得日期似乎要先通过碳处理,所以这似乎是一条死胡同。另一个问题是,我不确定是否有任何其他的日期格式,可能潜藏在周围

我希望避免直接编辑任何数据(至少在我更熟悉代码库之前是这样),但我很难找到用Carbon解释多种格式的最佳方法


欢迎您提供任何建议

我建议您创建一个脚本,该脚本将遍历数据库,获取创建的值,并将其标准化。这样,它们都是相同的,您就不必担心在代码中添加/删除文本。

我建议您创建一个脚本,该脚本将遍历数据库,获取创建的值,并将其标准化。这样,它们都是相同的,您就不必担心在代码中添加/删除文本。

要检索在
创建的
的原始值,您可以在模型中使用
$this->attributes['created\u at']


这将使您能够对
$this->created_at
应用访问者。

要检索
created_at
的原始值,您可以在模型中使用
$this->attributes['created_at']


这将使您能够对在
创建的
$this->应用访问器。

这是我目前正试图避免的事情,因为它是一个大型应用程序,我希望能够在直接修改数据之前先测试边缘情况。这是我目前正在努力避免的事情,因为它是一个大型应用程序,我希望能够在直接修改数据之前先测试边缘情况。这正是我想要的。非常感谢。正是我想要的。非常感谢。