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

date()とかtime()の関数よりDateTimeクラス使った方が良さそう的な話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for たきゃはし たきゃはし
June 29, 2019
15

 date()とかtime()の関数よりDateTimeクラス使った方が良さそう的な話

Avatar for たきゃはし

たきゃはし

June 29, 2019

Transcript

  1. Carbon ͷ setTestNow() ͱ͸ • Carbon::now() ͷ݁Ռ͕ Carbon::setTestNow() Ͱࢦఆͨ͠೔࣌ͱ ͳΔ

    <?php require_once './vendor/autoload.php'; use Carbon\Carbon; echo Carbon::now()->format('Y-m-d'); // 2019-06-29 Carbon::setTestNow('2019-07-07'); echo Carbon::now()->format('Y-m-d'); // 2019-07-07
  2. setTestNow()Λ࢖͍ɺdate() ΛCarbonͷػೳ ʹมߋͯ͠ςετΛ͢Δ <?php require_once './vendor/autoload.php'; use Carbon\Carbon; Carbon::setTestNow('2019-07-07'); if

    (Carbon::now()->format('Y-m-d') === '2019೥7݄7೔') { lucky_campaign_site(); } • ͜ΕͰը໘͔ΒςετͰ͖ΔɻΩϟϯϖʔϯαΠτ͕දࣔ͞Εͳ ͍͜ͱʹؾ෇͘ͷͰɺ౰೔ʹͳΔલʹ͜ͷόά͸ղফͰ͖ͨ͸ͣ Ͱ͋Δɻ
  3. ೔෇ִؒ DateInterval • ೔෇ͷִؒͦͷ΋ͷΛදݱ͢Δɻʢ3೔ͱ͔2 ೥ͱ͔ʣ • DateTime ͷ diff() ͕ฦ͢ܕ

    • ִؒࢦࣔࢠʢinterval_specʣͰੜ੒͢Δ • ࣍ϖʔδͰઆ໌͠·͢
  4. DatePeriod ͷ࢖༻ྫ <?php $begin = new DateTime('2019-07-01'); $end = (new

    DateTime('2019-07-31'))->modify('+1 day'); $interval = new DateInterval('P1D'); $dateRange = new DatePeriod($begin, $interval, $end); foreach ($dateRange as $date) { echo $date->format("Y೥m݄d೔") . PHP_EOL; } • 2019೥7݄1೔͔Β2019೥7݄31೔·Ͱग़ྗ • $begin, $end, $interval Λ΋ͱʹੜ੒ͨ͠DatePriodͷ $dataRange͸TraversableͳͷͰɺforeachͰϧʔϓՄೳɻ