far2l icon indicating copy to clipboard operation
far2l copied to clipboard

Некорректное отображение времени изменения в полном режиме панели

Open VVakko opened this issue 3 months ago • 2 comments

Если на панели выбрать "Полный" режим отображения списка файлов, при определённых условиях получаем некорректное отображение времени.

Здесь время частично отображено в 12-часовом формате: N,SEA,DEM,T:0,7,15,5 Image

Увеличиваем ширину колонки на 1 символ – время начинает отображаться в 24-часовом формате: N,SEA,DEM,T:0,7,16,5 Image

Вопросов 3:

  1. По идее, если в LC_TIME прописано POSIX, то дата должна отображаться примерно в таком виде:
Image
  1. Как можно сделать столбец с датой/временем последней правки 1 в 1 как в mc? Т.е. если время правки в текущем году, формат – "Oct 9 23:15", а если не в текущем, то формат "Oct 9 2024". В таком формате в 12 символов умещается очень много информации. Обычно в работе, если и нужно время правки, то это обычно касается файлов, которые изменялись недавно. Если понадобится посмотреть точное время правки файла изменённого 3 года назад – можно будет нажать Ctrl+A.

  2. Опционально. В mc в столбце "Размер" для обычных папок с вменяемым количеством файлов – указывается размер 4096, возможно, что столько места занимает запись "каталог" на диске. Но если в папке "невменяемое" количество файлов, более 100 тысяч, к примеру, размер указывается уже больше.

Image

Это "обычное" отображение размера папки, а не точный подсчёт размера, после выполнения команды "Размеры каталогов". После точного подсчёта размеры другие:

Image

Т.е. сейчас мы у папок видим просто слово "Папка", которое нам ни о чём не говорит. Если бы мы видели размер как в первом случае, мы бы хотя бы понимали, что если размер >4096, значит в папке много файлов. Это число – это то, что показывет команда stat в поле "Size".

VVakko avatar Oct 09 '25 21:10 VVakko

Far2l, следую коду из windows far, имеет ограниченное форматирование даты и времени и напрямую никакие системные значения, в том числе LC_TIME, автоматически не влияют. Доступные настройки вывода см. в F9->Параметры->Настройки интерфейса->Формат даты и времени, где в ручном режиме доступно выдергивание по кнопке [ Из системной локали ].

Спасибо за замеченную особенность с шириной и 12/24-часовым временем - просто оставлю здесь экспресс анализ почему оно так сейчас работает без понимания зачем так в древности сделано - причина в очень древней части кода, пришедшей ещё из изначального портирования из windows far2: https://github.com/elfmz/far2l/blob/5d81e87f3780081490f7fd5dd86562e07c5c4027/far2l/src/datetime.cpp#L697-L705


Оставлю здесь ссылки на собственно современный код, формирующий вывод:

  • общее форматирование вывода дат внутри far2l - функция ConvertDate из datetime.cpp https://github.com/elfmz/far2l/blob/5d81e87f3780081490f7fd5dd86562e07c5c4027/far2l/src/datetime.cpp#L654-L772
  • форматирование именно на панелях - функция FormatStr_DateTime из panelmix.cpp https://github.com/elfmz/far2l/blob/5d81e87f3780081490f7fd5dd86562e07c5c4027/far2l/src/mix/panelmix.cpp#L514-L572

akruphi avatar Oct 10 '25 06:10 akruphi

Оаказывается 12-часовое представление при определенной ширине документированная фича, описанная в помощи в разделе "Customizing file panel view modes" / "Настройка режимов просмотра панели файлов"

Image

akruphi avatar Oct 22 '25 08:10 akruphi