【问题标题】:Carbon parse to ISO8601碳解析到 ISO8601
【发布时间】:2019-03-02 15:55:48
【问题描述】:

我正在尝试获取当前时间并将其格式化为:

"2018-09-26T21:40:29+02:00"

但是当我尝试时:

$isoDate = \Carbon\Carbon::now()->format('c');

据我了解,将 c 传递给格式化函数会将其解析为 iso8601,但显然情况并非如此。

关于如何将当前时间解析为ISO8601 OR 20181001T094006Z的任何帮助

【问题讨论】:

  • 没有单一的 8601 格式。使用日期格式自行构建。
  • 当你尝试你所拥有的东西时会发生什么? c 应转换为 ISO8601。这是我运行echo \Carbon\Carbon::now()->format("c");时得到的结果:2018-09-26T20:05:30+00:00
  • @AladinSmall,是的,那里有大约 8 种不同的格式...
  • @Devon 我认为我对我的问题非常有建设性,但是由于我的声誉不佳,我很容易被拖钓。所以请再次阅读问题,它指定了什么样的iso格式:ISO8601 OR 20181001T094006Z

标签: php laravel php-carbon


【解决方案1】:
echo Carbon::now()->toIso8601String();

【讨论】:

    【解决方案2】:
    Carbon::now()->toISOString()
    

    这将返回 “2020-05-12T13:13:42.817684Z”

    Carbon::now()->toIso8601String()
    

    这将返回 “2020-05-12T13:15:32+00:00”

    使用corePHP

    date(DateTime::ATOM, time())
    

    这将返回 “2021-08-22T15:26:48+10:00”

    【讨论】:

      【解决方案3】:

      没有单一的 8601 格式。 8601 定义了各种可接受的格式,其中 PHP 的c 代表了最常见的格式之一。

      对于您希望的特定 8601 格式没有单个字符,但 Ymd\THis\Z 格式应该可以工作。 TZ 是文字,所以用反斜杠转义它们以避免它们在格式字符串中被解释。确保只有 UTC 时间戳用于这种特定格式。

      http://php.net/manual/en/function.date.php 列出了所有可接受的格式字符。

      【讨论】:

      • 您确定这是有效的 ISO 8601 格式吗?我认为年、月和日期之间的连字符不是可选的,小时、分钟和秒之间的冒号也不是可选的。
      • 是的。就像我在答案和cmets中说的,8601有多种格式。
      猜你喜欢
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2018-08-06
      • 2018-01-12
      • 1970-01-01
      • 2012-10-28
      • 2012-01-30
      • 1970-01-01
      相关资源
      最近更新 更多