Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

All about Carbon Dating

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