Формат даты на панелях

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
dimbo
Posts: 12
Joined: Mon 28 Sep, 2009 08:23

Формат даты на панелях

Post by dimbo » Wed 18 Oct, 2017 12:12

Вопрос: где настраивается формат даты, отображаемой Фаром на панелях?
В подсказке написано, как сделать так, чтобы отображалось четыре цифры года вместо двух, но там не написано, как поменять местами
день и месяц. Кстати, раньше было нормально (т.е. в формате DD/MM/YY), но в какой-то момент Фар начал отображать дату в формате MM/DD/YY.

Code: Select all

╔════════════════════════════ C:\Program Files\Far Manager ══════╤══════╤════════5:49 PM
║р                             Имя                               │Размер│  Дата  │Время║
║..                                                              │ Вверх│08/16/17│14:17║
║Addons                                                          │ Папка│08/16/17│14:17║
║Documentation                                                   │ Папка│05/29/13│17:31║
║Encyclopedia                                                    │ Папка│08/16/17│14:17║
║Plugins                                                         │ Папка│08/06/14│01:35║
║PluginSDK                                                       │ Папка│11/30/12│22:49║
║changelog                                                       │1256 К│08/07/17│04:13║
║changelog_eng                                                   │678533│08/07/17│04:13║
║RestoreOldPluginSettings                                     cmd│   828│02/13/13│06:06║ <--- Дата в формате MM/DD/YY
║SaveOldPluginSettings                                        cmd│   790│02/13/13│06:06║
║File_id                                                      diz│   537│08/07/17│04:13║
║lpeg                                                         dll│ 43008│08/07/17│04:13║
║lua5.1                                                       dll│ 11776│08/07/17│04:13║
║lua51                                                        dll│454360│08/07/17│04:13║
║luafar3                                                      dll│455680│08/07/17│04:18║
║Far                                                          exe│4747 К│08/07/17│04:13║
║FarEng                                                       hlf│312064│08/07/17│04:13║
║FarRus                                                       hlf│450043│08/07/17│04:13║
║Far.exe.example                                              ini│  2956│08/07/17│04:13║
║FarEng                                                       lng│ 91809│08/07/17│04:13║
║FarRus                                                       lng│119290│08/07/17│04:13║
╟────────────────────────────────────────────────────────────────┴──────┴────────┴─────╢
║FarRus.hlf                                                                            ║
╚══════════════════════════════ 8563 К (15/5) ═══ 61.1 Г ══════════════════════════════╝
C:\Program Files\Far Manager>date /t
18.10.2017                                                                               <--- Системная дата в формате DD/MM/YYYY

C:\Program Files\Far Manager>                                                                                                                                                   ↑
Версия Фара - 3.0 build 5000 x64

User avatar
HaRT
Moderator
Posts: 9159
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 174 times

Формат даты на панелях

Post by HaRT » Wed 18 Oct, 2017 12:36

Дата отображается в соответствии с общесистемной региональной настройкой краткого формата даты.
Фар есть инструмент, а не нянька. © 2009 DrKnS

dimbo
Posts: 12
Joined: Mon 28 Sep, 2009 08:23

Формат даты на панелях

Post by dimbo » Mon 30 Oct, 2017 11:44

Спасибо за ответ, но в том-то и дело, что
  1. В настройках ОС шаблон для short date - dd.MM.yyyy
  2. Системная утилита date /t отображает дату именно в системном формате (на скриншоте в исходном сообщении это показано). Если бы FAR тоже использовал системные настройки, то формат вывода date /t совпадал с форматом даты в FAR'e.

dimbo
Posts: 12
Joined: Mon 28 Sep, 2009 08:23

Формат даты на панелях

Post by dimbo » Sun 26 Nov, 2017 18:25

Не дождался ответа, попробовал разобраться сам. Обнаружил, что FAR получает информацию о формате даты с помощью вызова
GetLocaleInfo(GetThreadLocale(), LOCALE_IDATE | LOCALE_RETURN_NUMBER, reinterpret_cast<wchar_t*>(&Result), sizeof(Result) / sizeof(wchar_t))
(в файле locale.cpp, функция locale::GetDateFormat()).

На моей машине установлена АНГЛИЙСКАЯ Windows 7 x64, но в панели управления "Region and Language" установлены настройки для России. Так вот, оказалось, что у меня GetThreadLocale() возвращает 0x0409, что соответствует английским настройким, а не русским.
Я пока не стал дальше выяснять, почему GetThreadLocale() ведет себя именно таким образом, но выяснил, что GetUserDefaultLCID() возвращает правильный идентификатор - 0x0419 (соответствует русскому языку). Соответственно, после замены вызова GetThreadLocale() на GetUserDefaultLCID() даты в FAR'е начали отображаться в правильном формате.

В связи с этим, вопрос на обсуждение, к знатокам внутренностей FAR'а:
Возможно, стоит поменять везде в FAR'е вызовы GetThreadLocale() на GetUserDefaultLCID() ? У меня сложилось впечатление, что так будет правильно работать в более разнообразных конфигурациях.

User avatar
DrKnS
Posts: 5430
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 6 times
Been thanked: 251 times

Формат даты на панелях

Post by DrKnS » Sun 26 Nov, 2017 20:37

dimbo wrote:
Sun 26 Nov, 2017 18:25
Возможно, стоит поменять везде в FAR'е вызовы GetThreadLocale() на GetUserDefaultLCID()
Судя по этой статье, лучше на LOCALE_USER_DEFAULT (как и было раньше).
Ok, 5101.

AlexeyVG
Posts: 3
Joined: Sun 01 Dec, 2019 06:02
Has thanked: 2 times

Формат даты на панелях

Post by AlexeyVG » Sun 01 Dec, 2019 06:05

DrKnS wrote:
Sun 26 Nov, 2017 20:37
Судя по этой статье, лучше на LOCALE_USER_DEFAULT (как и было раньше).
Ok, 5101.
Не в курсе, багу ещё не поправили? У меня версия 3.0.5454 ч64
Что такое 5101? Поискал в https://bugs.farmanager.com/view_all_bug_page.php, там такого номера нет.

User avatar
abelenki
Posts: 450
Joined: Thu 02 Jul, 2009 07:39
Location: Perm, Russia
Has thanked: 131 times
Been thanked: 20 times
Contact:

Формат даты на панелях

Post by abelenki » Sun 01 Dec, 2019 06:09

AlexeyVG wrote:
Sun 01 Dec, 2019 06:05
Что такое 5101?
номер билда. текущий номер билда - 5513.

AlexeyVG
Posts: 3
Joined: Sun 01 Dec, 2019 06:02
Has thanked: 2 times

Формат даты на панелях

Post by AlexeyVG » Sun 01 Dec, 2019 08:51

abelenki wrote:
Sun 01 Dec, 2019 06:09
номер билда. текущий номер билда - 5513.
Спасибо!
"Ok, 5101." - означает, что в 5101 этот баг тоже есть, или "поправлено в 5101"?

AlexeyVG
Posts: 3
Joined: Sun 01 Dec, 2019 06:02
Has thanked: 2 times

Формат даты на панелях

Post by AlexeyVG » Sun 01 Dec, 2019 08:59

AlexeyVG wrote:
Sun 01 Dec, 2019 08:51
"Ok, 5101." - означает, что в 5101 этот баг тоже есть, или "поправлено в 5101"?
Установил последнюю стабильную, 5511 - всё работает.
Ещё раз спасибо abelenki за разъяснения!

Post Reply

Return to “Нужна помощь”