如何解释Carbon / Laravel中不一致的dateFormats?

时间:2017-08-24 16:37:45

标签: php laravel date php-carbon

我继承了一个使用以前属于Rails应用程序的数据库的Laravel 5应用程序。因此,在日期列(created_atupdated_at等)中,日期格式不一致,我试图确定如何考虑到Laravel' s碳整合。

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

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

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

Unexpected data found. Data missing

我的第一个想法是尝试检测模型级别是否存在微秒,如果没有,则将.000000添加到日期字符串中,以便Carbon运行良好且数据保持不变。

不幸的是,看起来第一次通过Carbon获取$this->created_at的日期,所以这看起来像死路一条。另一个问题是,我不确定是否还有其他可能潜伏的日期格式。

我希望避免直接编辑任何数据(至少在我对代码库比较熟悉之前),但我对于考虑多种格式的最佳方式感到困惑与碳。

非常欢迎任何建议!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

要检索XYZTRWE的原始值,您可以在模型中使用created_at

如果您愿意,这将使您能够将访问者应用于$this->attributes['created_at']