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
19
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
540
5分で「へぇ〜」がひとつ増える、PHPの”気になる”関数の話
takahashiyuya
0
360
Laravelのヘルパー
takahashiyuya
1
2.7k
PSR が分かってきた
takahashiyuya
0
590
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
New Earth Scene 8
popppiees
4
2.8k
Mobile First: as difficult as doing things right
swwweet
225
10k
The untapped power of vector embeddings
frankvandijk
2
2k
GitHub's CSS Performance
jonrohan
1033
470k
The Language of Interfaces
destraynor
162
27k
How GitHub (no longer) Works
holman
316
150k
The Cult of Friendly URLs
andyhume
79
7.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
520
Odyssey Design
rkendrick25
PRO
2
920
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Ͱε Ϛʔτʹ࣮ͯ͠Έ͍͔ͯ ͕Ͱ͠ΐ͏͔ɻ