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

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

Avatar for たきゃはし たきゃはし
June 29, 2019
1

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

Avatar for たきゃはし

たきゃはし

June 29, 2019
Tweet

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ͰϧʔϓՄೳɻ