iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 2
2
Software Development

輪子們,聽口令,大部分解開始!系列 第 2

Carbon(1)--PHP 世界的時光機

  • 分享至 

  • xImage
  •  

時間旅行一直以來都是電影或動漫的經典主題;時間處理也是--它是程式語言的經典卡關問題。

Carbon 是 PHP 的第三方時間處理套件。它繼承了原生的 Datatime ,並新增了許多語意化的行為,讓處理時間的難度降低許多。

比方說:想像自己是未來世界的特南克斯,乘坐的時光機程式是用 PHP 寫的,那該如何知道 20 年前的 timestamp 呢?

讓 Carbon 來處理就很簡單:

use Carbon\Carbon;

echo Carbon::now('Asia/Tokyo')->subYears(20)->timestamp;

或是維斯在黃金弗利沙毀滅地球的時候,決定出手倒退時光。那他怎麼定位出三分鐘前的時間點呢?

對 Carbon 來說只是小菜一碟:

use Carbon\Carbon;

echo Carbon::now('Asia/Tokyo')->subMinutes(3)->timestamp;

為何用 Carbon

總括來說, Carbon 處理了下面的問題:

  1. 語意化的取值方法,如:

    Carbon::now();        // 現在
    Carbon::today();      // 今天 00:00:00
    Carbon::tomorrow();   // 明天 00:00:00
    
  2. 語意化的比較方法,如:

    $time1->lessThan($time2);          // $time1 是否比 $time2 早
    $time1->closest($time2, $time3);   // 取得離 $time1 比較近的時間
    $time1->isWeekend();               // $time1 是週末嗎
    
  3. 頭痛的時區問題

    echo Carbon::now('Asia/Taipei');
    echo Carbon::now('Asia/Tokyo');
    
    // 兩個時間會差一小時
    

明天就來看看 Carbon 是如何解決這些問題的。

參考資料


上一篇
向前人致敬!
下一篇
Carbon(2)--繼承並不萬惡
系列文
輪子們,聽口令,大部分解開始!17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言