[英]Laravel / Carbon - Return diffForHumans() in the shorter format like instagram
让我的 API 在我创建的日期返回 diffForHumans():
public function getCreatedAtAttribute($value)
{
return \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $value)->diffForHumans();
}
这会创建例如
1 day ago
6 days ago
3 weeks ago
1 month ago
但我希望的是与 Instagram 一样,它只是简单地返回:
1d
6d
3w
1m
除了用空格分割返回值并取第二个单词的第一个字母和数字之外,有没有办法做到这一点?
编辑:输入一个问题为您解决问题的可爱场合之一。
这是我刚刚想到的。 似乎有效,但对任何其他解决方案持开放态度。
public function getCreatedAtAttribute($value)
{
$diffForHumans = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $value)->diffForHumans();
$data = explode(" ", $diffForHumans);
$number = $data[0];
$denominator = substr($data[1], 0, 1);
return $data[0] . $denominator;
}
Carbon没有内置此功能,但是它应该足够简单,可以像这样操作输出:
str_replace([' days', ' day'], 'd', $diffForHumans);
碳有这个内置:
$object->diffForHumans(null, null, true);
public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.