如何解释 Carbon/Laravel 中不一致的日期格式?
How can I account for inconsistent dateFormats in Carbon/Laravel?
我继承了一个 Laravel 5 应用程序,该应用程序使用以前属于 Rails 应用程序的数据库。结果,在日期列(created_at
、updated_at
等)中,日期格式不一致,考虑到 Laravel's碳整合。
Rails 应用程序存储这样的日期:2017-01-17 23:02:51+00
Laravel 应用程序包括微秒,因此日期如下所示:2017-01-17 23:02:51.451741+00
问题是 Laravel 通过 Carbon 运行它的所有日期函数,Carbon 根据全局 $dateFormat
解析它们,导致 Rails 生成的日期抛出以下内容错误:
Unexpected data found. Data missing
我的第一个想法是尝试检测模型级别是否存在微秒,如果没有,将 .000000
添加到日期字符串中,这样 Carbon 就可以很好地发挥作用并且数据保持完整。
不幸的是,$this->created_at
的日期似乎首先通过 Carbon,所以这似乎是一个死胡同。另一个问题是我不确定是否还有其他可能潜伏的日期格式。
我想避免直接编辑任何数据(至少在我更熟悉代码库之前),但我不知道用 Carbon 处理多种格式的最佳方法。
非常欢迎任何建议!
我建议您创建一个脚本来遍历数据库,获取 created_at 值,并对它们进行标准化。这样它们都是一样的,您就不必担心代码中的 adding/removing 文本。
要检索 created_at
的原始值,您可以在模型中使用 $this->attributes['created_at']
。
这将使您能够将访问器应用于 $this->created_at
,如果您愿意的话。
我继承了一个 Laravel 5 应用程序,该应用程序使用以前属于 Rails 应用程序的数据库。结果,在日期列(created_at
、updated_at
等)中,日期格式不一致,考虑到 Laravel's碳整合。
Rails 应用程序存储这样的日期:2017-01-17 23:02:51+00
Laravel 应用程序包括微秒,因此日期如下所示:2017-01-17 23:02:51.451741+00
问题是 Laravel 通过 Carbon 运行它的所有日期函数,Carbon 根据全局 $dateFormat
解析它们,导致 Rails 生成的日期抛出以下内容错误:
Unexpected data found. Data missing
我的第一个想法是尝试检测模型级别是否存在微秒,如果没有,将 .000000
添加到日期字符串中,这样 Carbon 就可以很好地发挥作用并且数据保持完整。
不幸的是,$this->created_at
的日期似乎首先通过 Carbon,所以这似乎是一个死胡同。另一个问题是我不确定是否还有其他可能潜伏的日期格式。
我想避免直接编辑任何数据(至少在我更熟悉代码库之前),但我不知道用 Carbon 处理多种格式的最佳方法。
非常欢迎任何建议!
我建议您创建一个脚本来遍历数据库,获取 created_at 值,并对它们进行标准化。这样它们都是一样的,您就不必担心代码中的 adding/removing 文本。
要检索 created_at
的原始值,您可以在模型中使用 $this->attributes['created_at']
。
这将使您能够将访问器应用于 $this->created_at
,如果您愿意的话。