Некорректное отображение времени изменения в полном режиме панели
Если на панели выбрать "Полный" режим отображения списка файлов, при определённых условиях получаем некорректное отображение времени.
Здесь время частично отображено в 12-часовом формате:
N,SEA,DEM,T:0,7,15,5
Увеличиваем ширину колонки на 1 символ – время начинает отображаться в 24-часовом формате:
N,SEA,DEM,T:0,7,16,5
Вопросов 3:
- По идее, если в LC_TIME прописано POSIX, то дата должна отображаться примерно в таком виде:
-
Как можно сделать столбец с датой/временем последней правки 1 в 1 как в mc? Т.е. если время правки в текущем году, формат – "Oct 9 23:15", а если не в текущем, то формат "Oct 9 2024". В таком формате в 12 символов умещается очень много информации. Обычно в работе, если и нужно время правки, то это обычно касается файлов, которые изменялись недавно. Если понадобится посмотреть точное время правки файла изменённого 3 года назад – можно будет нажать Ctrl+A.
-
Опционально. В mc в столбце "Размер" для обычных папок с вменяемым количеством файлов – указывается размер 4096, возможно, что столько места занимает запись "каталог" на диске. Но если в папке "невменяемое" количество файлов, более 100 тысяч, к примеру, размер указывается уже больше.
Это "обычное" отображение размера папки, а не точный подсчёт размера, после выполнения команды "Размеры каталогов". После точного подсчёта размеры другие:
Т.е. сейчас мы у папок видим просто слово "Папка", которое нам ни о чём не говорит. Если бы мы видели размер как в первом случае, мы бы хотя бы понимали, что если размер >4096, значит в папке много файлов. Это число – это то, что показывет команда stat в поле "Size".
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
Оаказывается 12-часовое представление при определенной ширине документированная фича, описанная в помощи в разделе "Customizing file panel view modes" / "Настройка режимов просмотра панели файлов"