Что я хочу сделать, так это заставить скрипт на сервере читать текстовый файл, сортировать его, а затем выводить в объект javascript (возможно, через JSON). Рассматриваемый текстовый файл выглядит примерно так:
13/09/2009,17/09/2009,Arbitrary dates 14/09/2009,18/09/2009,Some random comment 14/09/2010,18/12/2010,A comment to the dates 14/09/2010,18/09/2010,A subset of another date 14/09/2001,18/09/2002,The oldest date
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
, но в настоящее время я ограничен PHP 4.4. В идеале я хотел бы хранить даты в формате, который:
- Можно сравнить численно
- Удобны для чтения человеком (позволяют редактировать
dates.txt
человеку) - Последовательно отформатированы (т.е. "01-01-1900" преобразуется в "01/01/1900")
- Может быть преобразован в объект даты javascript.
Как мне хранить даты, чтобы они соответствовали этим ограничениям?