BETA

PHPで日付計算は辛い

投稿日:2019-12-23
最終更新:2019-12-23

日付計算をする必要があったのでちょっと調べました。
PHP標準の機能のみで頑張るのはちょっとつらい。。。Carbonなどのライブラリの利用を考慮に入れたほうが良さそうです。

大きく分けて2種類の計算方法があります。dateを使うか、DateTimeを使うかです。
以下に書き方の比較としてサンプルを書きました。php.netのサンプルをほぼコピペですが、、、

<?php  
echo "//////////////////////////////////////////////\n";  
echo "date, strtotimeを使った日付計算               \n";  
echo "//////////////////////////////////////////////\n";  
$date = date('Y-m-d', strtotime('2000-12-31'));  

$date = date('Y-m-d', strtotime($date . ' 1 month'));  
echo $date . "\n";  

$date = date('Y-m-d', strtotime($date . ' 1 month'));  
echo $date . "\n";  

echo "\n";  
echo "//////////////////////////////////////////////\n";  
echo "Datetime, DateIntervalを使った日付計算        \n";  
echo "//////////////////////////////////////////////\n";  
$date = new DateTime('2000-12-31');  
$interval = new DateInterval('P1M');  

$date->add($interval);  
echo $date->format('Y-m-d') . "\n";  

$date->add($interval);  
echo $date->format('Y-m-d') . "\n";  

結果

//////////////////////////////////////////////  
date, strtotimeを使った日付計算  
//////////////////////////////////////////////  
2001-01-31  
2001-03-03  

//////////////////////////////////////////////  
Datetime, DateIntervalを使った日付計算  
//////////////////////////////////////////////  
2001-01-31  
2001-03-03  

どちらも直感的には書けず多少慣れが必要です。
ライブラリor日付ヘルパークラス等を作ってなるべくラップする方向で開発したほうが、みんなの笑顔が増えそうですね!!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@ma35351750の技術ブログかも

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう