【问题标题】:Carbon::isoFormat doesn't existCarbon::isoFormat 不存在
【发布时间】:2018-11-05 10:27:09
【问题描述】:

因为 laravel 使用 now() 作为 Carbon 类的辅助函数,所以我尝试了这个

dd(now('GMT+5:45')->isoFormat('x')))

但它返回 laravel 的错误方法调用异常,说明

Illuminate\Support\Carbon::isoFormat does not exist.

我想要的只是将日期和时间转换为time string,就像strtotime() 函数一样

我现在该怎么办?

【问题讨论】:

  • 只在 carbon 实例上使用 format 函数

标签: php laravel datetime datetime-format php-carbon


【解决方案1】:

您使用的 Laravel 版本似乎低于 5.8 其中包含 Carbon 1,因此,isoFormat() 不包含,因为它是碳 2 的一部分。

因此您可以选择使用formatLocalized(),但请注意它使用different 放置模式而不是isoFormat()

如果你想使用isoFormat(),我给你的建议是升级到Laravel 5.8

如果您想继续使用当前版本的 Laravel 并继续使用 formatLocalized(),那么您需要执行以下操作:

  1. 在您的服务提供商之一中,比如说 AppServiceProvider,在您的 register() 中添加:Carbon::setLocale($this->app->getLocale()); 这将本地化 ->diffForHumans()
  2. 通过设置 php setLocal() 来帮助 carbon,它将使用您机器中已安装的语言环境来确保您的操作系统 (Linux/Mac) 已安装所需的本地:您可以通过键入 locale -a 来检查是否它没有显示然后运行:sudo dpkg-reconfigure locales 将出现一个简单的 GUI,通过点击 sapce 按钮然后 enter 选择所需的本地,然后选择默认区域设置。
  3. 如果您刚刚安装了所需的语言环境,那么请确保重新启动您的 php-fpm 服务: systemctl restart php7.3-fpm.service
  4. 使用本地化方法,在您的情况下:->formatLocalized()。例如:->formatLocalized('%A %d %B %Y')

【讨论】:

    【解决方案2】:

    您可以使用Carbon 中的format() 函数。

    now('GMT+5:45')->format('y-m-d');
    

    'y-m-d' 可以替换为您可以看到的格式here

    编辑: 或者如果你想使用isoFormat()

    您可以使用Carbon::now() 代替now()

    Carbon\Carbon::now()->isoFormat();
    

    出现此问题是因为 now() 是 Laravel 助手,它返回 Illuminate\Support\Carbon

    【讨论】:

    • @VincentWasteels 指定的所有他想要的问题是将日期和时间转换为time string。它没有指定它是否必须是 ISO 格式
    • 嗯,你是对的,有权利的人应该更新问题标题
    猜你喜欢
    • 2020-03-02
    • 1970-01-01
    • 2019-02-07
    • 2014-12-03
    • 1970-01-01
    • 2022-01-12
    • 2023-01-19
    相关资源
    最近更新 更多