laravel Carbon函数

快速切換前後日期

 
  1. <?php
  2. use Carbon\ Carbon;
  3. $now = Carbon::now();
  4. echo $now; // 2015-03-26 00:36:47
  5. $today = Carbon::today();
  6. echo $today; // 2015-03-26 00:00:00
  7. $tomorrow = Carbon::tomorrow( 'Europe/London');
  8. echo $tomorrow; // 2015-03-27 00:00:00
  9. $yesterday = Carbon::yesterday();
  10. echo $yesterday; // 2015-03-25 00:00:00

建立特定日期的時間

 
  1. <?php
  2. use Carbon\ Carbon;
  3. $timezone = 'Asia/Taipei';
  4. // 從「年月日」建立
  5. Carbon::createFromDate($year, $month, $day, $timezone);
  6. // 從「時分秒」建立
  7. Carbon::createFromTime($hour, $minute, $second, $timezone);
  8. // 從完整的「年月日時分秒」建立
  9. Carbon::create($year, $month, $day, $hour, $minute, $second, $timezone);
  10. // 從指定的格式建立
  11. Carbon::createFromFormat($format, $time, $tz);
  12. echo Carbon::createFromFormat( 'Y-m-d H', '1975-05-21 22')->toDateTimeString(); // 1975-05-21 22:00:00
  13. // 從時間戳記建立
  14. echo Carbon::createFromTimeStamp( -1)->toDateTimeString(); // 1969-12-31 18:59:59
  15. echo Carbon::createFromTimeStamp( -1, 'Europe/London')->toDateTimeString(); // 1970-01-01 00:59:59
  16. echo Carbon::createFromTimeStampUTC( -1)->toDateTimeString(); // 1969-12-31 23:59:59

轉換日期

 
  1. <?php
  2. use Carbon\ Carbon;
  3. // 透過文字移動日期
  4. $knownDate = Carbon::create( 2001, 5, 21, 12); // create testing date
  5. Carbon::setTestNow($knownDate); // set the mock
  6. echo new Carbon( 'tomorrow'); // 2001-05-22 00:00:00 ... notice the time !
  7. echo new Carbon( 'yesterday'); // 2001-05-20 00:00:00
  8. echo new Carbon( 'next wednesday'); // 2001-05-23 00:00:00
  9. echo new Carbon( 'last friday'); // 2001-05-18 00:00:00
  10. echo new Carbon( 'this thursday'); // 2001-05-24 00:00:00

取得日期資料

 
  1. <?php
  2. use Carbon\ Carbon;
  3. $dt = Carbon::parse( '2012-9-5 23:26:11.123789');
  4. // 取的指定時間資料的資訊(整數)
  5. var_dump($dt->year); // int(2012)
  6. var_dump($dt->month); // int(9)
  7. var_dump($dt->day); // int(5)
  8. var_dump($dt->hour); // int(23)
  9. var_dump($dt->minute); // int(26)
  10. var_dump($dt->second); // int(11)
  11. var_dump($dt->micro); // int(123789)
  12. var_dump($dt->dayOfWeek); // int(3)
  13. var_dump($dt->dayOfYear); // int(248)
  14. var_dump($dt->weekOfMonth); // int(1)
  15. var_dump($dt->weekOfYear); // int(36)
  16. var_dump($dt->daysInMonth); // int(30)
  17. var_dump($dt->timestamp); // int(1346901971)
  18. var_dump(Carbon::createFromDate( 1975, 5, 21)->age); // int(39) calculated vs now in the same tz
  19. var_dump($dt->quarter); // int(3)
  20. // 回傳與 UTC 差異的秒數
  21. var_dump(Carbon::createFromTimestampUTC( 0)->offset); // int(0)
  22. var_dump(Carbon::createFromTimestamp( 0)->offset); // int(-18000)
  23. // 回傳與 UTC 差異的時數
  24. var_dump(Carbon::createFromTimestamp( 0)->offsetHours); // int(-5)
  25. // 找出當天日否有日光節約時間
  26. var_dump(Carbon::createFromDate( 2012, 1, 1)->dst); // bool(false)
  27. var_dump(Carbon::createFromDate( 2012, 9, 1)->dst); // bool(true)
  28. // 判斷指定的的時區是否與預設的時區相同
  29. var_dump(Carbon::now()->local); // bool(true)
  30. var_dump(Carbon::now( 'America/Vancouver')->local); // bool(false)
  31. // 判斷是否為 UTC 的時區時間
  32. var_dump(Carbon::now()->utc); // bool(false)
  33. var_dump(Carbon::now( 'Europe/London')->utc); // bool(true)
  34. var_dump(Carbon::createFromTimestampUTC( 0)->utc); // bool(true)
  35. // 取得時區實例
  36. echo get_class(Carbon::now()->timezone); // DateTimeZone
  37. echo get_class(Carbon::now()->tz); // DateTimeZone
  38. // 取得時區實例的名稱
  39. echo Carbon::now()->timezoneName; // America/Toronto
  40. echo Carbon::now()->tzName; // America/Toronto

設定時間資料

 
  1. <?php
  2. use Carbon\ Carbon;
  3. $dt = Carbon::now();
  4. $dt->year = 1975;
  5. $dt->month = 13; // 年份會強制 +1,且月份變為 1 月
  6. $dt->month = 5;
  7. $dt->day = 21;
  8. $dt->hour = 22;
  9. $dt->minute = 32;
  10. $dt->second = 5;
  11. $dt->timestamp = 169957925; // 這個設定不會變更時區
  12. // 透過字串或是 DateTimeZone 實例去設定時區
  13. $dt->timezone = new DateTimeZone( 'Europe/London');
  14. $dt->timezone = 'Europe/London';
  15. $dt->tz = 'Europe/London';
  16. // 鏈結設定方式
  17. $dt->year( 1975)->month( 5)->day( 21)->hour( 22)->minute( 32)->second( 5)->toDateTimeString();
  18. $dt->setDate( 1975, 5, 21)->setTime( 22, 32, 5)->toDateTimeString();
  19. $dt->setDateTime( 1975, 5, 21, 22, 32, 5)->toDateTimeString();
  20. $dt->timestamp( 169957925)->timezone( 'Europe/London');
  21. $dt->tz( 'America/Toronto')->setTimezone( 'America/Vancouver');

格式化時間資料

 
  1. <?php
  2. use Carbon\ Carbon;
  3. $dt = Carbon::create( 1975, 12, 25, 14, 15, 16);
  4. var_dump($dt->toDateTimeString() == $dt); // bool(true) => uses __toString()
  5. echo $dt->toDateString(); // 1975-12-25
  6. echo $dt->toFormattedDateString(); // Dec 25, 1975
  7. echo $dt->toTimeString(); // 14:15:16
  8. echo $dt->toDateTimeString(); // 1975-12-25 14:15:16
  9. echo $dt->toDayDateTimeString(); // Thu, Dec 25, 1975 2:15 PM
  10. // 仍可以使用 format() 函式
  11. echo $dt->format( 'l jS \\of F Y h:i:s A'); // Thursday 25th of December 1975 02:15:16 PM
  12. // 常用的時間格式
  13. echo $dt->toAtomString(); // in 1 Jahr
  14. echo $dt->toCookieString(); // Thursday, 25-Dec-1975 14:15:16 EST
  15. echo $dt->toIso8601String(); // 1975-12-25T14:15:16-0500
  16. echo $dt->toRfc822String(); // Thu, 25 Dec 75 14:15:16 -0500
  17. echo $dt->toRfc850String(); // Thursday, 25-Dec-75 14:15:16 EST
  18. echo $dt->toRfc1036String(); // Thu, 25 Dec 75 14:15:16 -0500
  19. echo $dt->toRfc1123String(); // Thu, 25 Dec 1975 14:15:16 -0500
  20. echo $dt->toRfc2822String(); // Thu, 25 Dec 1975 14:15:16 -0500
  21. echo $dt->toRfc3339String(); // 1975-12-25T14:15:16-05:00
  22. echo $dt->toRssString(); // Thu, 25 Dec 1975 14:15:16 -0500
  23. echo $dt->toW3cString(); // 1975-12-25T14:15:16-05:00

比較時間差異

 
  1. <?php
  2. use Carbon\ Carbon;
  3. echo Carbon::now()->tzName; // America/Toronto
  4. $first = Carbon::create( 2012, 9, 5, 23, 26, 11);
  5. $second = Carbon::create( 2012, 9, 5, 20, 26, 11, 'America/Vancouver');
  6. echo $first->toDateTimeString(); // 2012-09-05 23:26:11
  7. echo $first->tzName; // America/Toronto
  8. echo $second->toDateTimeString(); // 2012-09-05 20:26:11
  9. echo $second->tzName; // America/Vancouver
  10. // 大於、等於、小於
  11. var_dump($first->eq($second)); // bool(true)
  12. var_dump($first->ne($second)); // bool(false)
  13. var_dump($first->gt($second)); // bool(false)
  14. var_dump($first->gte($second)); // bool(true)
  15. var_dump($first->lt($second)); // bool(false)
  16. var_dump($first->lte($second)); // bool(true)
  17. $first->setDateTime( 2012, 1, 1, 0, 0, 0);
  18. $second->setDateTime( 2012, 1, 1, 0, 0, 0); // Remember tz is 'America/Vancouver'
  19. var_dump($first->eq($second)); // bool(false)
  20. var_dump($first->ne($second)); // bool(true)
  21. var_dump($first->gt($second)); // bool(false)
  22. var_dump($first->gte($second)); // bool(false)
  23. var_dump($first->lt($second)); // bool(true)
  24. var_dump($first->lte($second)); // bool(true)
  25. // 時間區間比較
  26. $first = Carbon::create( 2012, 9, 5, 1);
  27. $second = Carbon::create( 2012, 9, 5, 5);
  28. var_dump(Carbon::create( 2012, 9, 5, 3)->between($first, $second)); // bool(true)
  29. var_dump(Carbon::create( 2012, 9, 5, 5)->between($first, $second)); // bool(true)
  30. var_dump(Carbon::create( 2012, 9, 5, 5)->between($first, $second, false)); // bool(false)
  31. // 時間大小比較
  32. $dt1 = Carbon::create( 2012, 1, 1, 0, 0, 0);
  33. $dt2 = Carbon::create( 2014, 1, 30, 0, 0, 0);
  34. echo $dt1->min($dt2); // 2012-01-01 00:00:00
  35. $dt1 = Carbon::create( 2012, 1, 1, 0, 0, 0);
  36. $dt2 = Carbon::create( 2014, 1, 30, 0, 0, 0);
  37. echo $dt1->max($dt2); // 2014-01-30 00:00:00
  38. // now is the default param
  39. $dt1 = Carbon::create( 2000, 1, 1, 0, 0, 0);
  40. echo $dt1->max();
  41. // 時間差異運算
  42. echo Carbon::now( 'America/Vancouver')->diffInSeconds(Carbon::now( 'Europe/London')); // 0
  43. $dtOttawa = Carbon::createFromDate( 2000, 1, 1, 'America/Toronto');
  44. $dtVancouver = Carbon::createFromDate( 2000, 1, 1, 'America/Vancouver');
  45. echo $dtOttawa->diffInHours($dtVancouver); // 3
  46. echo $dtOttawa->diffInHours($dtVancouver, false); // 3
  47. echo $dtVancouver->diffInHours($dtOttawa, false); // -3
  48. $dt = Carbon::create( 2012, 1, 31, 0);
  49. echo $dt->diffInDays($dt->copy()->addMonth()); // 31
  50. echo $dt->diffInDays($dt->copy()->subMonth(), false); // -31
  51. $dt = Carbon::create( 2012, 4, 30, 0);
  52. echo $dt->diffInDays($dt->copy()->addMonth()); // 30
  53. echo $dt->diffInDays($dt->copy()->addWeek()); // 7
  54. $dt = Carbon::create( 2012, 1, 1, 0);
  55. echo $dt->diffInMinutes($dt->copy()->addSeconds( 59)); // 0
  56. echo $dt->diffInMinutes($dt->copy()->addSeconds( 60)); // 1
  57. echo $dt->diffInMinutes($dt->copy()->addSeconds( 119)); // 1
  58. echo $dt->diffInMinutes($dt->copy()->addSeconds( 120)); // 2
  59. echo $dt->addSeconds( 120)->secondsSinceMidnight(); // 120

時間狀態

 
  1. <?php
  2. use Carbon\ Carbon;
  3. $dt = Carbon::now();
  4. $dt->isWeekday();
  5. $dt->isWeekend();
  6. $dt->isYesterday();
  7. $dt->isToday();
  8. $dt->isTomorrow();
  9. $dt->isFuture();
  10. $dt->isPast();
  11. $dt->isLeapYear();
  12. $dt->isSameDay(Carbon::now());
  13. $born = Carbon::createFromDate( 1987, 4, 23);
  14. $noCake = Carbon::createFromDate( 2014, 9, 26);
  15. $yesCake = Carbon::createFromDate( 2014, 4, 23);
  16. var_dump($born->isBirthday($noCake)); // bool(false)
  17. var_dump($born->isBirthday($yesCake)); // bool(true)

時間運算

 
  1. <?php
  2. use Carbon\ Carbon;
  3. $dt = Carbon::create( 2012, 1, 31, 0);
  4. echo $dt->toDateTimeString(); // 2012-01-31 00:00:00
  5. echo $dt->addYears( 5); // 2017-01-31 00:00:00
  6. echo $dt->addYear(); // 2018-01-31 00:00:00
  7. echo $dt->subYear(); // 2017-01-31 00:00:00
  8. echo $dt->subYears( 5); // 2012-01-31 00:00:00
  9. echo $dt->addMonths( 60); // 2017-01-31 00:00:00
  10. echo $dt->addMonth(); // 2017-03-03 00:00:00 equivalent of $dt->month($dt->month + 1); so it wraps
  11. echo $dt->subMonth(); // 2017-02-03 00:00:00
  12. echo $dt->subMonths( 60); // 2012-02-03 00:00:00
  13. echo $dt->addDays( 29); // 2012-03-03 00:00:00
  14. echo $dt->addDay(); // 2012-03-04 00:00:00
  15. echo $dt->subDay(); // 2012-03-03 00:00:00
  16. echo $dt->subDays( 29); // 2012-02-03 00:00:00
  17. echo $dt->addWeekdays( 4); // 2012-02-09 00:00:00
  18. echo $dt->addWeekday(); // 2012-02-10 00:00:00
  19. echo $dt->subWeekday(); // 2012-02-09 00:00:00
  20. echo $dt->subWeekdays( 4); // 2012-02-03 00:00:00
  21. echo $dt->addWeeks( 3); // 2012-02-24 00:00:00
  22. echo $dt->addWeek(); // 2012-03-02 00:00:00
  23. echo $dt->subWeek(); // 2012-02-24 00:00:00
  24. echo $dt->subWeeks( 3); // 2012-02-03 00:00:00
  25. echo $dt->addHours( 24); // 2012-02-04 00:00:00
  26. echo $dt->addHour(); // 2012-02-04 01:00:00
  27. echo $dt->subHour(); // 2012-02-04 00:00:00
  28. echo $dt->subHours( 24); // 2012-02-03 00:00:00
  29. echo $dt->addMinutes( 61); // 2012-02-03 01:01:00
  30. echo $dt->addMinute(); // 2012-02-03 01:02:00
  31. echo $dt->subMinute(); // 2012-02-03 01:01:00
  32. echo $dt->subMinutes( 61); // 2012-02-03 00:00:00
  33. echo $dt->addSeconds( 61); // 2012-02-03 00:01:01
  34. echo $dt->addSecond(); // 2012-02-03 00:01:02
  35. echo $dt->subSecond(); // 2012-02-03 00:01:01
  36. echo $dt->subSeconds( 61); // 2012-02-03 00:00:00

人類閱讀時間格式

 
  1. <?php
  2. use Carbon\ Carbon;
  3. // 通常會用在留言的時間顯示
  4. // 該時間會比較與現在的時間的差異
  5. echo Carbon::now()->subDays( 5)->diffForHumans(); // 5 days ago
  6. echo Carbon::now()->diffForHumans(Carbon::now()->subYear()); // 1 year after
  7. $dt = Carbon::createFromDate( 2011, 8, 1);
  8. echo $dt->diffForHumans($dt->copy()->addMonth()); // 1 month before
  9. echo $dt->diffForHumans($dt->copy()->subMonth()); // 1 month after
  10. echo Carbon::now()->addSeconds( 5)->diffForHumans(); // 5 seconds from now
  11. echo Carbon::now()->subDays( 24)->diffForHumans(); // 3 weeks ago
  12. echo Carbon::now()->subDays( 24)->diffForHumans( null, true); // 3 weeks

時間常數

 
  1. <?php
  2. use Carbon\ Carbon;
  3. var_dump(Carbon::SUNDAY); // int(0)
  4. var_dump(Carbon::MONDAY); // int(1)
  5. var_dump(Carbon::TUESDAY); // int(2)
  6. var_dump(Carbon::WEDNESDAY); // int(3)
  7. var_dump(Carbon::THURSDAY); // int(4)
  8. var_dump(Carbon::FRIDAY); // int(5)
  9. var_dump(Carbon::SATURDAY); // int(6)
  10. var_dump(Carbon::YEARS_PER_CENTURY); // int(100)
  11. var_dump(Carbon::YEARS_PER_DECADE); // int(10)
  12. var_dump(Carbon::MONTHS_PER_YEAR); // int(12)
  13. var_dump(Carbon::WEEKS_PER_YEAR); // int(52)
  14. var_dump(Carbon::DAYS_PER_WEEK); // int(7)
  15. var_dump(Carbon::HOURS_PER_DAY); // int(24)
  16. var_dump(Carbon::MINUTES_PER_HOUR); // int(60)
  17. var_dump(Carbon::SECONDS_PER_MINUTE); // int(60)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值