Laravel
  • Introduction
  • 常用語法
  • 結合Vue.js從無到有架設一個網站
  • 透過CMD新增File
  • Schedule
  • Annotation
  • Super Variable
  • API的設定
  • Create 新專案
  • Raw Expressions
  • Import - Export
  • JWT 外加 登入功能
  • Carbon
  • Storage 保存文件
  • Require_once
  • 設定apache將laravel專案run起來
  • 有關leftjoin的用法
  • Advanced Join Clauses
  • Call API方式
  • 產生新的APP_KEY
  • 程序優化技巧
  • composer update VS 手動丟檔
  • 全域變數被使用過
  • FB的SDK
Powered by GitBook
On this page

Was this helpful?

Carbon

PreviousJWT 外加 登入功能NextStorage 保存文件

Last updated 5 years ago

Was this helpful?

基本上時間相關功能都會用到它,這邊我不多贅述只是列出一些我常用到的功能,剩下的大家可以點擊這個連結過去看,

// 將一週的第一天改為星期日
    Carbon::setWeekStartsAt(Carbon::SUNDAY);
// 將一週的最後一天改為星期六
    Carbon::setWeekEndsAt(Carbon::SATURDAY);
// 現在時間
    Carbon::now();
// 創造一個日期
    Carbon::create(2001, 5, 21, 12, 50, 30); // 年.月.日.時.分.秒
// 查年份
    $dt->year
// 查月份
    $dt->month
// 查日期
    $dt->day
// 查小時
    $dt->hour
// 查分鐘
    $dt->minute
// 查秒數
    $dt->second
// 查當天在這一週的哪一天
    $dt->dayOfWeek
// 查當天在這個月的哪一天
    $dt->dayOfMonth
// 查當天在這一年的哪一天
    $dt->dayOfyear
// 查這週在這個月的哪一週
    $dt->weekOfMonth
// 查這週在這一年的哪一週
    $dt->weekOfYear
// 將時間輸出成字串
    $dt->toDateTimeString()
// 增加年
    $dt->addYear()
    $dt->addYears(5)
// 增加月
    $dt->addMonth()
    $dt->addMonths(5)
// 增加日
    $dt->addDay()
    $dt->addDays(5)
// 增加週
    $dt->addWeek()
    $dt->addWeeks(5)
// 一月的第一天以及最後一天
    $dt->startOfMonth()
    $dt->endOfMonth()
// 一年的第一天以及最後一天
    $dt->startOfYear()
    $dt->endOfYear()
// 一天的頭以及尾
    $dt->startOfDay()
    $dt->endOfDay()

當我們從資料庫,或是從哪邊弄到時間字串的時候,都需要先切割然後再生成Carbon能看得懂的時間

  /**
   * 將時間字串轉成Carbon看得懂得時間格式
   * 此時間字串格式為yyyy-mm-dd hh:ii:ss
   * @param  [string] $dt [要轉換的時間字串]
   */
  public function change_to_carbon($dt){
    // 將日期跟時間分開
    $re = explode(' ', $dt);
    $date = $re[0];
    $time = $re[1];
    // 將日其中的年月日分開
    $year = explode('-', $date)[0];
    $month = explode('-', $date)[1];
    $day = explode('-', $date)[2];
    // 將時間中的時分秒分開
    $hour = explode(':', $time)[0];
    $minute = explode(':', $time)[1];
    $second = explode(':', $time)[2];

    $dt = Carbon::create($year,$month,$day,$hour,$minute,$second);
    // 將一週的第一天改為星期日
    Carbon::setWeekStartsAt(Carbon::SUNDAY);
    // 將一週的最後一天改為星期六
    Carbon::setWeekEndsAt(Carbon::SATURDAY);
    return $dt;
  }

當然我們也可以直接用另一種方式

Carbon::parse("YY-mm-dd hh:ii:ss");

還有一點,時間可以互相比大小,如下

$start_date = Carbon::parse($task_data->task_start_date);
$now_date = Carbon::now();

if($start_date < $now_date){ // 直接做比較,但是無法加減乘除,只能比較在這天之前或是之後這樣
  $diff = strtotime($now_date)-strtotime($start_date);
  $val = floor($diff/($task_data->task_interval*86400));
  $days = $val*$task_data->task_interval*86400;
  $start_date = date("Y-m-d H:i:s",strtotime($start_date)+$days);
}
http://carbon.nesbot.com/docs/