【问题标题】:Using Carbon I got "textual month could not be found" error使用 Carbon 我得到“找不到文本月份”错误
【发布时间】:2019-05-08 18:56:15
【问题描述】:

在我的 Laravel 5.8 应用程序中,我将日期转换为字符串格式,例如 02 May, 2019 使用 Carbon 的日期时间。我试试看:

setlocale(LC_TIME, 'en');
$filter_check_in_datepicker_till = Carbon::createFromFormat( 'dd MMMM YYY', $filter_check_in_datepicker_till )->locale('en_EN');;

但出现错误:

"message": "发现意外数据。\n找不到文本月份\n数据丢失",

哪个是正确的方法?

谢谢!

【问题讨论】:

    标签: laravel-5 php-carbon


    【解决方案1】:

    The Carbon docs说:

    createFromFormat() 主要是基本 php 函数 DateTime::createFromFormat 的包装器。

    从文档中并不完全清楚,但这意味着传递给 createFromFormat() 的 $format 参数是 DateTime 格式,不是 Carbon 格式。所以你应该使用d, M Y而不是dd MMMM YYY(检查DateTime format reference):

    \Carbon\Carbon::createFromFormat('d, M Y', '02, May 2019');
    // returns 2019-05-02 12:48:26
    

    作为参考,您的 Carbon 格式存在几个问题,因此即使 createFromFormat 采用 Carbon 格式字符串,您所拥有的也无法正常工作。检查Carbon format reference

    • dd实际上是“缩小的日期名称(从Su到Sa),可转换”。您真的希望 DD 用于一个月中的零填充日;

    • 您使用的日期格式包含逗号,但您的格式字符串缺少该逗号;

    • YYY 实际上不是有效的 Carbon 格式字符串。你真的想要YYYY 4 位数的年份;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-16
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      相关资源
      最近更新 更多