PHPのstrtotime()関数で日付を導出してみる
2010 年 2 月 3 日
| カテゴリー: LAMP奮闘記, PHP, まぎれもなくただのメモ
PHPはやはり便利だなぁ、と痛感したついでにメモ。
先日の郵便番号データですが、日本郵便さんのHPで毎月初めに差分データを公開してくださっています。
削除対象データと追加対象データがそれぞれ別CSVとしてDLできますが、そのファイル名は以下のような感じです。
- 削除データファイル名・・・DEL_yymm.CSV
- 追加データファイル名・・・ADD_yymm.CSV
この差分データをPHPスクリプトでSQLiteに反映させてしまおう、と考えてコードを書いてみたのですが、検証でいきなりつまづきました><
上記のデータは「毎月月初」に「前月分」として公開されるので、例えば今月(2010/02)では、ファイル名は以下になります。
- 削除データファイル名・・・DEL_1001.CSV
- 追加データファイル名・・・ADD_1001.CSV
まずは、このファイルの存在チェックを行おうと書いたコードはコチラです。
$str = date('ym');
$addFile = sprintf('ADD_%s.CSV', $str);
$delFile = sprintf('DEL_%s.CSV', $str);
で、この変数をvar_dump()などしてみると、2月なので当然こうなります。
var_dump($addFile, $delFile); string(12) "ADD_1002.CSV" string(12) "DEL_1002.CSV"
う~ん、これでは希望するファイルの存在チェックは出来ないですね。date()関数の第2引数にはtimestampを渡せるので、自前で現在からn日前のtimestampを計算して渡してやらないとダメかな??などと考えたのですが、そこはPHP。さすがPHP。
strtotime()関数の引数として「予約キー」というのを指定してやれば、相当柔軟にtimestampが求められるみたいです。
今回のケースではこれでOK。
$str = date('ym', strtotime('-1 month'));
ちなみに公式マニュアルの例によると、以下のような指定が可能みたいです。
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
相当柔軟で実に便利ですね!!
以下のエントリも参考にさせていただきました^^
コメントをどうぞ
| トラックバック
