能將一個時間庫作到在github上8000+星星、各大PHP框架內置採用,無不體現Carbon過人之處。
阿北將盡可能使用最通俗的語言帶你入門,本教程使用carbon版本爲1.25.0,運行環境以下:php
Carbon支持人工安裝和composer安裝。git
這個最簡單,使用下面代碼便可完成。github
composer require nesbot/carbon
這個擴展會有兩個擴展包被下載下來,vendor目錄中能夠找到它們。數據庫
我並不推薦這樣作,若是非要不可,請以下步驟yii2
一、下載Carbon.php文件 到你程序的任何位置。app
https://github.com/briannesbi...composer
二、開始使用 引入咱們剛剛下載的Carbon.php文件。框架
require 'path/to/Carbon.php'; use Carbon\Carbon; echo Carbon::now();
Carbon在咱們操做時間時更加語義化,它提供了一些對象方法和一些靜態方法,爲了講解方便,咱們採用問答式。yii
在php裏咱們能夠經過date方法構造,並輸入咱們想要的格式,而在Carbon則以下ui
Carbon::now();//2018-03-27 21:52:45 Carbon::now('Europe/London');//你也能夠指定時區
固然你也能夠輕鬆獲取時區
Carbon::now()->tzName;// Asia/Shanghai
既然有now(),天然Carbon還很貼心的支持如下靜態方法
Carbon::today();// 2018-03-27 00:00:00 Carbon::tomorrow();//2018-03-28 00:00:00 Carbon:: yesterday();//2018-03-26 00:00:00
和now()同樣,你能夠爲其傳入時區參數。
咱們還能夠爲上面的now()這樣的方法添加細節,好比我想得到昨天早上8點的時間值。
Carbon::yesterday()->addHours(8);//2018-03-26 08:00:00 Carbon::yesterday()->addHours(8)->addMinutes(29);//2018-03-26 08:29:00 Carbon::yesterday()->addHours(8)->addMinutes(29)->addSeconds(19);//2018-03-26 08:29:19
做爲一名phper,咱們總喜歡將時間轉化爲時間戳後存入數據庫,用Carbon很簡單
Carbon::yesterday()->addHours(8)->timestamp;
輕鬆拿到時間戳。
在這個世界上有不少日子是值得記住的,好比生日、好比周6、好比將來等等,考慮到這樣的需求,Carbon規劃了以下方法。
大多數能夠看懂,有些特殊的說明下
咱們剛剛是經過一些時刻生成了Carbon對象,好比now、today等,除了這些Carbon還能夠包容其餘來源,好比下面的
Carbon::createFromDate($year, $month, $day, $tz); Carbon::createFromTime($hour, $minute, $second, $tz); Carbon::createFromTimeString("$hour:$minute:$second", $tz); Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);
$tz表明時區。
還有一個咱們老喜歡的
從時間戳得到時間。
Carbon::createFromTimestamp(time())->addHours(-1);//得到一個小時前的時間點
注意,針對於addHours等方法,你能夠填寫複數表明以前,是否是和咱們腦子裏想的同樣同樣的。
上面都是經過其餘形式得到時間,還有一種就是經過解析傳遞的時間來獲取Carbon對象而後進一步操做,好比
Carbon::parse("2018-03-27")->addHours(-1);// 2018-03-26 23:00:00
還支持一些語言內容first day of January 2008
Carbon::parse("first day of January 2008")->addHours(-1);
是否是很聰明。
還有種常常用的時間格式就是5小時前、4秒前這種,固然在yii2中有 Yii::$app->formatter->asRelativeTime() 能夠達到這個目的,使用Carbon那?
Carbon::now()->diffForHumans();// 1 second ago
呀,怎麼仍是英文那?別怕,咱們支持當地語言包,以下。
Carbon::setLocale('zh'); Carbon::now()->diffForHumans();// 1秒前
迄今爲止,Carbon一共支持64種語言。
針對於diffForHumans還支持一些參數配置,咱們會在Carbon速查表中給出。
針對於一個時間,Carbon容許咱們不一樣的格式化、不一樣的輸出,好比下面的代碼
$dt = Carbon::create(1975, 12, 25, 14, 15, 16); echo $dt->toDateString(); // 1975-12-25 echo $dt->toFormattedDateString(); // Dec 25, 1975 echo $dt->toTimeString(); // 14:15:16 echo $dt->toDateTimeString(); // 1975-12-25 14:15:16 echo $dt->toDayDateTimeString(); // Thu, Dec 25, 1975 2:15 PM
而且Carbon還提供了一個通用方法
$dt->format("Y-m-d H:i:s")
有時候咱們須要判斷用戶輸入的值是不是咱們要的時間格式,能夠用Carbon提供的hasFormat方法。
$dt->hasFormat('2018-03-03', 'Y-m-d');//false
返回真假。
有時候咱們須要判斷用戶輸入的時間是否在指定的時間範圍內,用Carbon輕鬆完成。
Carbon::parse($date)->between($first, $second);// true / false
這裏要注意$first和$second也是Carbon對象。
以上就是Carbon一些經常使用方法,固然還有不少不經常使用的,具體你們能夠去源文件Carbon.php中看看,這個庫的目錄結構很簡單,就是方法繁多。
另外這段時間我會抽空整理出Carbon的速查表,發佈後你能夠一鍵速查。
阿北的知識分享 https://nai8.me