Upgrade to Pro — share decks privately, control downloads, hide ads and more …

All about Carbon Dating

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

All about Carbon Dating

Avatar for Tim Groeneveld

Tim Groeneveld

October 08, 2014
Tweet

More Decks by Tim Groeneveld

Other Decks in Programming

Transcript

  1. Example #1 printf("Right now is %s", Carbon::now()->toDateTimeString()); printf("Right now in

    Vancouver is %s", Carbon::now('America/Vancouver')); //implicit __toString() $tomorrow = Carbon::now()->addDay(); $lastWeek = Carbon::now()->subWeek(); $nextSummerOlympics = Carbon::createFromDate(2012)->addYears(4); // \o/ HOLLA! 2016 is the next olympics! $officialDate = Carbon::now()->toRFC2822String(); $howOldAmI = Carbon::createFromDate(1975, 5, 21)->age; $noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London'); $worldWillEnd = Carbon::createFromDate(2012, 12, 21, 'GMT');
  2. Example #2 // Don't really want to die so mock

    now Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1)); // comparisons are always done in UTC if (Carbon::now()->gte($worldWillEnd)) { die(); } // Phew! Return to normal behaviour Carbon::setTestNow(); if (Carbon::now()->isWeekend()) { echo 'Party!'; } echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
  3. Example #3 class SeasonalProduct { protected $price; public function __construct($price)

    { $this->price = $price; } public function getPrice() { $multiplier = 1; if (Carbon::now()->month == 12) { $multiplier = 2; } return $this->price * $multiplier; } }
  4. Example #3 (ext…) $product = new SeasonalProduct(100); Carbon::setTestNow(Carbon::parse('first day of

    March 2000')); echo $product->getPrice(); // 100 Carbon::setTestNow(Carbon::parse('first day of December 2000')); echo $product->getPrice(); // 200 Carbon::setTestNow(Carbon::parse('first day of May 2000')); echo $product->getPrice(); // 100 Carbon::setTestNow();
  5. Example #4 echo Carbon::now('Australia/Sydney')->diffInSeconds(Carbon::now('Australia/Melbourne')); // 0 $dtOttawa = Carbon::createFromDate(2000, 1,

    1, 'America/Toronto'); $dtVancouver = Carbon::createFromDate(2000, 1, 1, 'America/Vancouver'); echo $dtOttawa->diffInHours($dtVancouver); // 3 echo $dtOttawa->diffInHours($dtVancouver, false); // 3 echo $dtVancouver->diffInHours($dtOttawa, false); // -3 $dt = Carbon::create(2012, 1, 31, 0); echo $dt->diffInDays($dt->copy()->addMonth()); // 31 echo $dt->diffInDays($dt->copy()->subMonth(), false); // -31