Carbon
基本上時間相關功能都會用到它,這邊我不多贅述只是列出一些我常用到的功能,剩下的大家可以點擊這個連結過去看,http://carbon.nesbot.com/docs/
// 將一週的第一天改為星期日
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);
}
Last updated