国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Carbon —— PHP 中日期 / 時間處理,你只需要這個擴展包就夠了

clasnake / 1375人閱讀

摘要:文章轉自在中使用日期和時間并不是容易或清晰的任務。操作日期時間抓取日期時間并不是你在處理日期時唯一要做的事情。格式化在上面的示例中,你可能注意到了方法。顯示人類容易閱讀的時間差在過去的幾年,顯示相對時間變得越來越流行。

文章轉自:https://learnku.com/php/t/26998

在 PHP 中使用日期和時間并不是容易或清晰的任務。我們必須處理 strtotime ,格式化問題,大量計算等等。

這個漂亮的包叫做 Carbon 可以幫助在 PHP 開發中處理日期/時間變得更加簡單、更語義化,從而使得我們的代碼更容易閱讀和維護。

Carbon

Carbon 是由 Brian Nesbit 開發的一個包,它擴展了 PHP 自己的 DateTime 類。

它提供了一些很好的功能來處理 PHP 中的日期,特別是諸如:

處理時區

輕松獲取當前時間

將 datetime 轉換成可讀的內容

將英語短語解析成 datetime (first day of January 2016)

日期的加減 (+ 2 weeks,?-6 months)

處理日期的語義方法

所有的這些都帶來了一個非常有用的包,使得這些在 PHP 中處理時間非常容易。

設置

為了使用 Carbon ,你需要從 Carbon 命名空間中導入 Carbon 。幸運的是,在 Laravel 中已經包括了 Carbon ,所以不需要和 Composer 一起添加。

當我們需要使用 Carbon 的時候,我們可以這樣導入它:


在導入之后,讓我們看看我們可以用這個很棒的包做一些很酷的事情。

獲取特定的日期/時間
// 獲取當前時間  - 2015-12-19 10:10:54
$current = Carbon::now();
$current = new Carbon();

// 獲取今天 - 2015-12-19 00:00:00
$today = Carbon::today();

// 獲取昨天 - 2015-12-18 00:00:00
$yesterday = Carbon::yesterday();

// 獲取明天 - 2015-12-20 00:00:00
$tomorrow = Carbon::tomorrow();

// 解析特定字符串 - 2016-01-01 00:00:00
$newYear = new Carbon("first day of January 2016");

// 設定一個特定的時區 - 2016-01-01 00:00:00
$newYearPST = new Carbon("first day of January 2016", "AmericaPacific");
創造具有更細粒度控制的日期

除了快速定義日期/時間方法之外,Carbon 也可以讓我們從特定數量的參數中創建時間。

Carbon::createFromDate($year, $month, $day, $tz);
Carbon::createFromTime($hour, $minute, $second, $tz);
Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);

當你以一種通常不被 Carbon 識別的格式獲得某種日期或時間時,這些是非常有用的。如果你為任何一個參數傳遞 null 值,則它默認會使用當前日期/時間傳遞 。

操作日期/時間

抓取日期/時間并不是你在處理日期時唯一要做的事情。你經常需要操作日期或時間。

例如,當為一個用戶創建一個試用期時,你將希望試用期在一定時間后過期。假設我們有 30 天的試用期。我們可以用 addsubtract 很容易的計算出時間。

在這段試用期內,我們會:

// 獲取當前時間
$current = Carbon::now();

// 添加 30 天到當前時間
$trialExpires = $current->addDays(30);

從 Carbon 文檔 中,我們可以找到一些其他的 add()sub() 方法:

$dt = Carbon::create(2012, 1, 31, 0);

echo $dt->toDateTimeString();            // 2012-01-31 00:00:00

echo $dt->addYears(5);                   // 2017-01-31 00:00:00
echo $dt->addYear();                     // 2018-01-31 00:00:00
echo $dt->subYear();                     // 2017-01-31 00:00:00
echo $dt->subYears(5);                   // 2012-01-31 00:00:00

echo $dt->addMonths(60);                 // 2017-01-31 00:00:00
echo $dt->addMonth();                    // 2017-03-03 00:00:00 equivalent of $dt->month($dt->month + 1); so it wraps
echo $dt->subMonth();                    // 2017-02-03 00:00:00
echo $dt->subMonths(60);                 // 2012-02-03 00:00:00

echo $dt->addDays(29);                   // 2012-03-03 00:00:00
echo $dt->addDay();                      // 2012-03-04 00:00:00
echo $dt->subDay();                      // 2012-03-03 00:00:00
echo $dt->subDays(29);                   // 2012-02-03 00:00:00

echo $dt->addWeekdays(4);                // 2012-02-09 00:00:00
echo $dt->addWeekday();                  // 2012-02-10 00:00:00
echo $dt->subWeekday();                  // 2012-02-09 00:00:00
echo $dt->subWeekdays(4);                // 2012-02-03 00:00:00

echo $dt->addWeeks(3);                   // 2012-02-24 00:00:00
echo $dt->addWeek();                     // 2012-03-02 00:00:00
echo $dt->subWeek();                     // 2012-02-24 00:00:00
echo $dt->subWeeks(3);                   // 2012-02-03 00:00:00

echo $dt->addHours(24);                  // 2012-02-04 00:00:00
echo $dt->addHour();                     // 2012-02-04 01:00:00
echo $dt->subHour();                     // 2012-02-04 00:00:00
echo $dt->subHours(24);                  // 2012-02-03 00:00:00

echo $dt->addMinutes(61);                // 2012-02-03 01:01:00
echo $dt->addMinute();                   // 2012-02-03 01:02:00
echo $dt->subMinute();                   // 2012-02-03 01:01:00
echo $dt->subMinutes(61);                // 2012-02-03 00:00:00

echo $dt->addSeconds(61);                // 2012-02-03 00:01:01
echo $dt->addSecond();                   // 2012-02-03 00:01:02
echo $dt->subSecond();                   // 2012-02-03 00:01:01
echo $dt->subSeconds(61);                // 2012-02-03 00:00:00    
Getters and Setters

另外一種快速操作或讀取時間的方法是使用可用的 getters 和 serrers 。

$dt = Carbon::now();

// 設置一些參數
$dt->year   = 2015;
$dt->month  = 04;
$dt->day    = 21;
$dt->hour   = 22;
$dt->minute = 32;
$dt->second = 5;

// 獲取一些參數
var_dump($dt->year);
var_dump($dt->month);
var_dump($dt->day);
var_dump($dt->hour);
var_dump($dt->second);
var_dump($dt->dayOfWeek);
var_dump($dt->dayOfYear);
var_dump($dt->weekOfMonth);
var_dump($dt->daysInMonth);

我們甚至還可以把一些 setter 串在一起。

$dt = Carbon::now();

$dt->year(1975)->month(5)->day(21)->hour(22)->minute(32)->second(5)->toDateTimeString();
$dt->setDate(1975, 5, 21)->setTime(22, 32, 5)->toDateTimeString();
$dt->setDateTime(1975, 5, 21, 22, 32, 5)->toDateTimeString();
格式化

在上面的示例中,你可能注意到了 ->toDateTimeString() 方法。我們可以方便的為達到我們的目的去進行格式化。在這種情況下,我們得到了一個日期時間字符串。

$dt = Carbon::now();

echo $dt->toDateString();               // 2015-12-19
echo $dt->toFormattedDateString();      // Dec 19, 2015
echo $dt->toTimeString();               // 10:10:16
echo $dt->toDateTimeString();           // 2015-12-19 10:10:16
echo $dt->toDayDateTimeString();        // Sat, Dec 19, 2015 10:10 AM

// ……當然 format() 也可以這樣用
echo $dt->format("l jS of F Y h:i:s A");         // Saturday 19th of December 2015 10:10:16 AM
相對時間

通過 diff() 方法可以很容易的顯示相對時間。

例如,我們有一篇博客,并且我們想顯示它是在 三小時 前發布的。可以利用這些方法。

求時間差

這些方法用于求兩個時間的時間差。

$current = Carbon::now();
$dt      = Carbon::now();

$dt = $dt->subHours(6);
echo $dt->diffInHours($current);         // -6
echo $current->diffInHours($dt);         // 6

$future = $current->addMonth();
$past   = $current->subMonths(2);
echo $current->diffInDays($future);      // 31
echo $current->diffInDays($past);        // -62
顯示人類容易閱讀的時間差

在過去的幾年,顯示相對時間變得越來越流行。在 Twitter 和 Facebook 等社交網絡中經常可以看到。

例如,將時間顯示為 3 小時前 比顯示 上午 8:12,更適合人類閱讀。

這些方法被用于計算時間差,并轉換為人類可閱讀的格式。

這里有四種表達時間差的方式:

將一個過去的時間和現在做比較:

1 小時前

5 個月前

將一個未來的時間和現在做比較:

1 小時后

5 個月后

將一個過去的時間和另一個時間做比較:

1 小時前

5 小時前

將一個未來的時間和另一個做比較:

1 小時后

5 小時后

$dt     = Carbon::now();
$past   = $dt->subMonth();
$future = $dt->addMonth();

echo $dt->subDays(10)->diffForHumans();     // 10 天前
echo $dt->diffForHumans($past);             // 1 個月前
echo $dt->diffForHumans($future);           // 1 個月前
總結

Carbon 能做的遠遠不止這些。請務必查看?Carbon 官方文檔。希望這能幫助你在 PHP 中更容易的使用日期 / 時間并加快開發效率!

文章轉自:https://learnku.com/php/t/26998 

更多文章:https://learnku.com/laravel/c...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31232.html

相關文章

  • PHP日期時間處理利器-Carbon

    摘要:介紹是中很人性化的時間日期處理插件,擁有接近個。最大的特點就是靈活人性化。 Carbon介紹 Carbon是PHP中很人性化的時間日期處理插件,github擁有接近5000個 star。github地址為:https://github.com/briannesbi... Carbon基本用法 //1、基本應用 $now = Carbon::now(); ...

    edagarli 評論0 收藏0
  • 一個簡單的 PHP 時間處理擴展

    摘要:處理時區輕松獲取時間日期加減使用英語短語處理時間安裝使用安裝,。 A simple PHP API extension for DateTime. Carbon 使處理日期和時間更加簡單。 處理時區 輕松獲取時間 日期加減 使用英語短語處理時間 ... 安裝 使用 composer 安裝,composer require nesbot/carbon。 在 composer.jso...

    mingzhong 評論0 收藏0
  • 一個簡單的 PHP 時間處理擴展

    摘要:處理時區輕松獲取時間日期加減使用英語短語處理時間安裝使用安裝,。 A simple PHP API extension for DateTime. Carbon 使處理日期和時間更加簡單。 處理時區 輕松獲取時間 日期加減 使用英語短語處理時間 ... 安裝 使用 composer 安裝,composer require nesbot/carbon。 在 composer.jso...

    blankyao 評論0 收藏0
  • 一個簡單的 PHP 時間處理擴展

    摘要:處理時區輕松獲取時間日期加減使用英語短語處理時間安裝使用安裝,。 A simple PHP API extension for DateTime. Carbon 使處理日期和時間更加簡單。 處理時區 輕松獲取時間 日期加減 使用英語短語處理時間 ... 安裝 使用 composer 安裝,composer require nesbot/carbon。 在 composer.jso...

    TesterHome 評論0 收藏0
  • 一個簡單的 PHP 時間處理擴展

    摘要:處理時區輕松獲取時間日期加減使用英語短語處理時間安裝使用安裝,。 A simple PHP API extension for DateTime. Carbon 使處理日期和時間更加簡單。 處理時區 輕松獲取時間 日期加減 使用英語短語處理時間 ... 安裝 使用 composer 安裝,composer require nesbot/carbon。 在 composer.jso...

    leanote 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<