Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
date()とかtime()の関数よりDateTimeクラス使った方が良さそう的な話
Search
たきゃはし
June 29, 2019
18
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
date()とかtime()の関数よりDateTimeクラス使った方が良さそう的な話
たきゃはし
June 29, 2019
More Decks by たきゃはし
See All by たきゃはし
AI時代のWebセキュリティリスク_レビュワーを救いたい.pdf
takahashiyuya
0
490
5分で「へぇ〜」がひとつ増える、PHPの”気になる”関数の話
takahashiyuya
0
340
Laravelのヘルパー
takahashiyuya
1
2.7k
PSR が分かってきた
takahashiyuya
0
590
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Believing is Seeing
oripsolob
1
220
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Paper Plane
katiecoart
PRO
4
53k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Fireside Chat
paigeccino
43
4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
730
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
3
4.3k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Six Lessons from altMBA
skipperchong
29
4.5k
Transcript
date()ͱ͔time()ͷؔ ΑΓDateTimeΫϥεͬ ͨํ͕ྑͦ͞͏తͳ ͖ͨΌ͠@takahashiyuya PHPΧϯϑΝϨϯεԬ2019
ࣗݾհ • ͖ͨΌ͠ @takahashiyuya • େࡕग़౦ژࡏॅϑϦʔϥϯε • ͓͍͍͠ͷ 🍺 🍜
🍣 Ԭ࠷ߴ͔ʁʁʁ • Laravel ͢͜ʢEloquentআ͘ʣ
None
date() ͱ͔͏ͱࠔΔ͜ͱ ͳʙʙʙΜͩʁʁʁ
ݱ࣌ࠁΛج४ͱ͢Δ ςετ͕Ͱ͖ͳ͍
͋ΔΤϯδχΞʹى͖ͨ൵ܶ • ʮ20197݄7ʹϥοΩʔΩϟϯϖʔϯͰαΠτΛ ද͍ࣔͨ͠ ͔ΒΑΖ͘͠ʂΊͪΌͪ͘ΌେࣄͳҊ݅ͩ ͔Β͔ͬ͠ΓνΣοΫͯ͠Ͷʂʯ • ʮɾɾɾ͋ɺ͍ɻʯ ্࢘ ΤϯδχΞ
ͱΓ͋͑ͣ • ʮɾɾɾΑ͠Ͱ͖ͨɻͰɺdate() ϥϯλΠϜʢ࣮ ߦ࣌ʣͷΛฦ͔͢Βࠓ֬ೝͷ͠Α͏͕ͳ͍Α ͳ͊ɻʯ <?php if (date('Y-m-d') ===
'20197݄7') { lucky_campaign_site(); }
ςετͯ͠ͳ͍ͷͰؾ͔ͳ͍ • ʮେࣄͳҊ͔݅ͩΒ͔ͬ͠ΓνΣοΫͯ͠Ͷͱґཔ͞ Ε͍ͯΔ͚ͲͲ͏͢Ε͍͍ΜͩΖ͏͔ɻ·͊͜Μͳ ؆୯ͳذͰؒҧ͑Δ͕ͣͳ͍͜͠ΕͰϦϦʔε͠ ͪΌ͓͏ɻʯ <?php if (date('Y-m-d') ===
'20197݄7') { lucky_campaign_site(); }
Ωϟϯϖʔϯ αΠτදࣔ͞Ε·ͤΜͰͨ͠ɾɾɾ ※͜ͷޠϑΟΫγϣϯͰ͢ɻ
͜͜·Ͱ ݱ࣌ࠁΛج४ͱ͢Δςετ͕ Ͱ͖ͳ͍ͱ͜͏ͳΔ͔ʙͳ
ʮͲ͏͢Ε͍͍ΜͩΖ͏͔ʯ ͱ͓ࠔΓͷํͷ͝ఏҊ
DateTimeΫϥε͓Αͼ֦ு ϥΠϒϥϦͷCarbonΛ͏ͷ ͍͔͕Ͱ͠ΐ͏͔
Carbon ͱ • DateTime ֦ுϥΠϒϥϦ • setTestNow() Ͱݱ࣌ࠁͷมߋ͕Մೳ • ๛ͳػೳɺ͔Ώ͍ͱ͜Ζʹख͕ಧͭ͘
• Πϛϡʔλϒϧ ʢCarbonImmutableʣ • ಛʹཧ༝ͳ͚Ε͓͢͢Ί
Carbon ͱ • DateTime ֦ுϥΠϒϥϦ • setTestNow() Ͱݱ࣌ࠁͷมߋ͕Մೳ • ๛ͳػೳɺ͔Ώ͍ͱ͜Ζʹख͕ಧͭ͘
• Πϛϡʔλϒϧ ʢCarbonImmutableʣ • ಛʹཧ༝ͳ͚Ε͓͢͢Ί
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
setTestNow()Λ͍ɺdate() ΛCarbonͷػೳ ʹมߋͯ͠ςετΛ͢Δ <?php require_once './vendor/autoload.php'; use Carbon\Carbon; Carbon::setTestNow('2019-07-07'); if
(Carbon::now()->format('Y-m-d') === '20197݄7') { lucky_campaign_site(); } • ͜ΕͰը໘͔ΒςετͰ͖ΔɻΩϟϯϖʔϯαΠτ͕දࣔ͞Εͳ ͍͜ͱʹؾ͘ͷͰɺʹͳΔલʹ͜ͷόάղফͰ͖ͨͣ Ͱ͋Δɻ
͠Ωϟϯϖʔϯʹ։࠵ظ͕ؒ͋ͬͨΒ։ ࢝ͱऴྃͷΛڥքͱͯ͠ςετ͢Δ ඞཁ͕͋Γ·͢ ͦ͏͍ͬͨϢχοτςετΛॻ͘͜ͱΛ ఆ͢ΔͳΒϥϯλΠϜ͔͠ฦͤͳ͍ date() time() ͑ͳ͍ DateTimeΫϥε
setTimeNow() ͷΑ͏ ͳػೳΛ࣋ͭ Carbon Λͬͨ΄͏͕ྑ͞ ͦ͏తͰ͋Δͱݴ͑ΔͣͰ͢
Carbon͔ͬΓͳͷͰDateTime ͷ৭ʑհίʔφʔ • ִؒ DateInterval • ִؒࢦࣔࢠ interval_spec • ظؒ
DatePeriod • Πϛϡʔλϒϧ DateTimeImmutable
Carbon͔ͬΓͳͷͰDateTime ͷ৭ʑհίʔφʔ • ִؒ DateInterval • ִؒࢦࣔࢠ interval_spec • ظؒ
DatePeriod • Πϛϡʔλϒϧ DateTimeImmutable
ִؒ DateInterval • ͷִؒͦͷͷΛදݱ͢Δɻʢ3ͱ͔2 ͱ͔ʣ • DateTime ͷ diff() ͕ฦ͢ܕ
• ִؒࢦࣔࢠʢinterval_specʣͰੜ͢Δ • ࣍ϖʔδͰઆ໌͠·͢
ִؒࢦࣔࢠʢinterval_specʣ • PʢPeriodʣ͔Β࢝·Δจࣈྻ • YMDHMS େ͖͍ॱʹࢦఆ͢Δඞཁ͕͋ΔʢলུՄʣ • HҎ߱Λࢦఆ͢Δ߹TΛઌʹ͚·͢ • ྫɿP2D
2 ɺ PT2S 2 ඵɺ P2YT2M 2 ͱ 2 • ৄ͘͠ ISO 8601 duration speci fi cation Λࢀর
Carbon͔ͬΓͳͷͰDateTime ͷ৭ʑհίʔφʔ • ִؒ DateInterval • ִؒࢦࣔࢠ interval_spec • ظؒ
DatePeriod • Πϛϡʔλϒϧ DateTimeImmutable
ظؒ DatePeriod • ͷظؒͦͷͷΛදݱ͢Δɻ • Traversable Λ࣮͍ͯ͠Δʢͭ·Γforeach ͰϧʔϓͰ͖ΔΦϒδΣΫτʹͳΔʣ • ظؒ։࢝ͱऴྃΛϧʔϓ͢Δ͚ͩͰͳ͘ɺ
ִؒʢDateIntervalʣ෮ճͷࢦఆՄ ೳɻ
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("Ym݄d") . PHP_EOL; } • 20197݄1͔Β20197݄31·Ͱग़ྗ • $begin, $end, $interval Λͱʹੜͨ͠DatePriodͷ $dataRangeTraversableͳͷͰɺforeachͰϧʔϓՄೳɻ
Carbon͔ͬΓͳͷͰDateTime ͷ৭ʑհίʔφʔ • ִؒ DateInterval • ִؒࢦࣔࢠ interval_spec • ظؒ
DatePeriod • Πϛϡʔλϒϧ DateTimeImmutable
Πϛϡʔλϒϧ DateTimeImmutable • ෆมɻৼΔ͍ʹΑͬͯঢ়ଶͷมߋͤͣɺͣ ৗʹ৽͍͠ΦϒδΣΫτΛฦ͢ɻ • ͓͢͢ΊɻͪΖΜCarbonImmutable͓͢ ͢Ίɻ
·ͱΊ date()time()ΛϩδοΫʹ ͏ͱςετ͕ॻ͚ͳ͔ͬͨ Γటष͍࣮ʹͳΓ͕ͪͳͷ ͰɺDateTimeCarbonͰε Ϛʔτʹ࣮ͯ͠Έ͍͔ͯ ͕Ͱ͠ΐ͏͔ɻ