私がやりたいのは、サーバー上のスクリプトにテキストファイルを読み取らせ、それを並べ替えてから、(おそらくJSONを介して)javascriptオブジェクトに出力することです。問題のテキストファイルは次のようになります。
2009年9月13日、2009年9月17日、任意の日付 2009年9月14日、2009年9月18日、ランダムなコメント 2010年9月14日、2010年12月18日、日付へのコメント 2010年9月14日、2010年9月18日、別の日付のサブセット 2001年9月14日、2002年9月18日、最も古い日付
ファイル読み取りを処理するphpは次のようになります。
function loadDates()
{
$dateFile = fopen("dates.txt", "rt");
$dates = array();
if($dateFile)
{
flock($dateFile,LOCK_SH);
$i = 0;
while(!feof($dateFile))
{
$text = fgets($dateFile);
if($text !== FALSE)
{
$i++;
$arr = explode(",",$text,3);
//actual storage
$dates[$i]['start'] = strtotime($arr[0]);
$dates[$i]['end'] = strtotime($arr[1]);
$dates[$i]['comment'] = $arr[2];
}
}
fclose($dateFile);
//sort by start date, then by end date
foreach($dates as $key => $item)
{
$start[$key] = $item['start'];
$end[$key] = $item['end'];
}
array_multisort($start, SORT_ASC, $end, SORT_ASC, $dates);
return $dates;
}
else
{
return FALSE;
}
}
ただし、これは開始日と終了日にunixタイムスタンプを格納します。このクラスを使用しますが、DateTime
現在はPHP4.4に制限されています。理想的には、次の形式で日付を保存したいと思います。
- 数値で比較できます
- 人間が読める形式(人間が編集できる形式
dates.txt
) - 一貫してフォーマットされている(つまり、「01-01-1900」は「01/01/1900」に変換されます)
- javascriptのDateオブジェクトに変換できます
これらの制限を満たすために、日付を保存するにはどうすればよいですか?