laravel carbon 使用
阿新 • • 發佈:2019-02-08
國內資料:
時間格式本地化
可以在 app/Providers/AppServiceProvider.php 的 boot() 方法中新增下面的程式碼來設定全域性本地化:
public function boot()
{
\Carbon\Carbon::setLocale('zh');
}
這樣就可以在前臺呼叫,然後顯示中文了。
比如在blade裡顯示文章建立時間:
$article->updated_at->diffForHumans()
就會顯示一週前.
轉圜時區:
$timestamp = date('Y-m-d H:i:s');
$date = Carbon::createFromFormat ('Y-m-d H:i:s', $timestamp, 'Asia/Shanghai');
$date->setTimezone('UTC');
//轉換成utc的時間
echo $date;
//現在時區仍然是Asia/Shanghai
echo date('Y-m-d H:i:s');
轉換:
function utcToLocal($datetime, $timezone = 'UTC')
{
$datetime = strtotime($datetime) ? strtotime($datetime) : $datetime;
$datetime = Carbon::createFromTimestamp ($datetime)->toDateTimeString();
$date = Carbon::createFromFormat('Y-m-d H:i:s', $datetime, 'UTC');
$date->setTimezone($timezone);
return $date;
}
function timeToW3c($datetime)
{
$timestamp = strtotime($datetime);
if (!$timestamp) {
return null;
}
$date = Carbon: :createFromTimeStamp($timestamp);
$w3c = str_replace(' ', 'T', $date->format('Y-m-d H:i:00'));
return $w3c;
}
public function allTimezoneAndTime()
{
$timeZones = \DateTimeZone::listIdentifiers();
foreach ($timeZones as $key => $value) {
$data[] = [
'timezone' => $value,
'localtime' => utcToLocal(date('Y-m-d H:i:s'), $value)->toDateTimeString(),
'utc_hour' => Carbon::now($value)->offsetHours,
];
}
array_multisort(array_column($data, 'utc_hour'), SORT_ASC, $data);
return view('admin.test.timezone', compact('data'));
}
carbon 官方文件:
carbon支援的格式轉換在這裡:
toDateString() ---輸出格式為:2018-06-07
toFormattedDateString() ---輸出格式為:Jun 7, 2018
toTimeString() ---輸出格式為:07:39:02
toDateTimeString() ---輸出格式為:2018-06-07 07:39:02
toDayDateTimeString() ---輸出格式為:Thu, Jun 7, 2018 7:39 AM
toAtomString() ---輸出格式為:2018-06-07T07:39:02+00:00
toCookieString() ---輸出格式為:Thursday, 07-Jun-2018 07:39:02 UTC
toIso8601String() ---輸出格式為:2018-06-07T07:39:02+00:00
toRfc822String() ---輸出格式為:Thu, 07 Jun 18 07:39:02 +0000
toIso8601ZuluString() ---輸出格式為:2018-06-07T07:39:02Z
toRfc850String() ---輸出格式為:Thursday, 07-Jun-18 07:39:02 UTC
toRfc1036String() ---輸出格式為:Thu, 07 Jun 18 07:39:02 +0000
toRfc1123String() ---輸出格式為:Thu, 07 Jun 2018 07:39:02 +0000
toRfc2822String() ---輸出格式為:Thu, 07 Jun 2018 07:39:02 +0000
toRfc3339String() ---輸出格式為:2018-06-07T07:39:02+00:00
toRssString() ---輸出格式為:Thu, 07 Jun 2018 07:39:02 +0000
toW3cString() ---輸出格式為:2018-06-07T07:39:02+00:00
toRfc7231String() ---輸出格式為:Thu, 07 Jun 2018 07:39:02 GMT