LINUX.ORG.RU

[sh] Преобразование даты

 


0

0

Дано: дата в немецкой локали формата "03 Dez 2008". Надо: преобразовать в "2008.12.03"

Вроде всё просто и ясно: date -f "03 Dez 2008" +%Y.%m.%d. Но! Поскольку дата в немецкой локали, то date материться на "Dez", видети ли ему буквы не знакомы. LC_ALL=de_DE не помогает (LC_TIME тоже). Подскажите, как преобразовать дату.

PS: Есть решение, но оно только для *BSD:LC_ALL=de_DE.ISO8859-1 date -jf '%d %b %Y' '03 Dez 2008' '+%Y.%m.%d'. А мне нужно для линукса

anonymous

я бы прогу написал для конвертации строки типа "03 Dez 2008", раз нет простого выхода (с применением date)...

ps: а date походу и правда не работает. По идее, так должно работать: LC_ALL=de_DE date -d '03 Dez 2008' '+%Y.%m.%d' Изменение локали понимает, Но не работает... Думаю, что в немецкой локали дата в формате "%d %b %Y" не поддерживается и поэтому не работает.

samson ★★
()
Ответ на: комментарий от friday

> Заменяй месяцы sed'ом на английские, и будет тебе щясте.

Очень чреззадничное решение. А если мне потом понадобиться с болгарской локали переводить, или, чего хуже, с китайской? Но пока придёться так и сделать :(

anonymous
()
Ответ на: комментарий от samson

> а date походу и правда не работает. По идее, так должно работать: LC_ALL=de_DE date -d '03 Dez 2008' '+%Y.%m.%d' Изменение локали понимает, Но не работает...

А кто-нибудь может написать в багзиллу coreutils про это? А то у меня с английским беда :( Спрашивал у немцев, у них тоже выдаёт ошибку.

anonymous
()

> LC_ALL=de_DE не помогает

'locale -a' в студию. А то может этой локали и нету у тебя вообще.

anonymous
()
Ответ на: комментарий от anonymous

>locale -a | grep de_DE
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8

Я ж говорю, у немцев спрашивал. Та же фигня. Ты думаешь у них тоже нет такой локали?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.