[PHP] 日付の文字列は比較ができる
とあるデータをファイルに保存した時に、そのファイルが最新データなのかどうかを日付で判断したくなるケースがあります。
(稀なケースですが・・・)
そんな日付の比較は、PHPでは簡単にできるという事と、ファイルのタイムスタンプを比較するやり方などの覚書です。
ファイルのタイムスタンプを取得する方法
サーバーに置いてあるファイルは、簡単にタイムスタンプを取得できます。<?php
$file_path = "sample.txt";
$timestamp = filemtime($file_path);
$datetime = date("Y-m-d H:i:s" , $timestamp);
echo $timestamp .PHP_EOL;
echo $datetime .PHP_EOL;
【結果】
1692075615
2023-08-15 05:00:15
filemtime()は、ファイルの最終更新日をunixtimeで取得することができます。
それをわかりやすいフォーマットの、年-月-日 時:分:秒という形にするには、普通にdate()関数でできちゃうので、この組み合わせで参照するのがいいでしょう。
日付の比較
2つのファイルがあったとします。- data_1.txt - data_最新.txtさて、どっちが最終更新されたデータでしょう。 自分のパソコンの中にこんなファイルがあって困っている人もいるかもしれませんね。 こういう場合は、windowやmacのOSを使っている場合は、ファイル情報を参照して、最終更新日を参照するだけでいいんですが、サーバーにあるファイルであれば、 lsコマンドや何かしらのファイル情報を取得する必要があります。 PHPで手軽にやりたければ、次のようにすると、いいでしょう。
<?php
$file_1 = "data_1.txt";
$file_2 = "data_最新.txt";
$date_1 = date("Y-m-d H:i:s" , filemtime($file_1));
$date_2 = date("Y-m-d H:i:s" , filemtime($file_2));
if($date_1 > $date_2){
echo $file_1 . "が最新";
}
else{
echo $file_2 . "が最新";
}
2つのファイルの場合であれば、簡単にif文で対応できますが、たくさんのファイルの場合は、sort()関数などを使うという手もあるでしょう。