【问题标题】:How to extract the time from "created_at" with Carbon如何使用 Carbon 从“created_at”中提取时间
【发布时间】:2017-02-06 15:34:29
【问题描述】:

我仍在为 Laravel 框架中的 Carbon 功能而苦苦挣扎。我在我的模型中创建了这些函数来提取表中“created_at”字段的日期:

public function getCreatedAtAttribute($date) {
    return Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('d.m.Y');
}

这适用于日期,但我需要如何在这个模型中编写一个函数,只提取 created_at 字段中的时间?

【问题讨论】:

  • 你使用的是什么版本的 Laravel?
  • 嗨罗斯(再次:))我正在使用 Laravel 5.3

标签: php laravel php-carbon


【解决方案1】:

我觉得您在覆盖日期的默认行为时限制了自己很多。

如果您删除访问器 (getCreatedAtAttribute),您将能够从属性本身调用格式,即

$model->created_at->format('d.m.Y')

$model->created_at->format('H:i:s');//e.g. 15:30:00

Carbon 只是DateTime 的包装器。有关格式字符的列表,您可以在这里查看:http://php.net/manual/en/function.date.php 例如今天的日期为 2016 年 2 月 6 日将是 jS F Y

【讨论】:

  • 非常好,没想到会这样
  • 很好,这正是我想要的。我使用 $model->created_at->format('Y-m-d H:i:s'); //例如。 2018-04-24 14:16:18.
【解决方案2】:

尝试使用

public function getCreatedAtAttribute($date) {
    return Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('H:i:s');
}

输出将是时间

【讨论】:

    【解决方案3】:

    如果您想手动将日期插入数据库,您可以这样做。

    
    "created_at" => now(),
    "updated_at" => now()
    
    

    调试

    
    dd(now());
    
    
    // output
    // 2022-03-16 10:24:07
    
    

    【讨论】:

      【解决方案4】:
      $model->created_at
      

      这将使用一些 Eloquent 魔法并将创建日期作为 Carbon 对象返回。

      【讨论】:

      • 只有当 created_at 条目在 Laravel 模型的 protected $dates = [ ]; 中时才为真
      • 谢谢,但我问的是如何仅提取具体时间
      • 那么请指定时间对您来说意味着什么。
      • @TimLewis 这是不正确的。 created_at 和 updated_at 被转换为 Carbon by default
      • @TimLewis 不,他们不是。该功能已融入Eloquent
      猜你喜欢
      • 2019-11-14
      • 2017-01-15
      • 1970-01-01
      • 2017-08-14
      • 2015-12-19
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多