Thread: Даты по-русски
Мне тут вопрос задали. Как сделать так чтобы to_char возвращал дату по-русски? Я так почитал доку и вижу что никак? А это считать багом или фичей? Вообще-то если мы работаем в русской локали, то дни недели и месяцы наверное всё-таки по-русски должны выдаваться. Нет? -- С уважением, Виктор
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-1929614923-1114795056=:4489 Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8BIT On Fri, 29 Apr 2005, Viktor Vislobokov wrote: > Мне тут вопрос задали. > Как сделать так чтобы to_char возвращал дату по-русски? > Я так почитал доку и вижу что никак? > > А это считать багом или фичей? Вообще-то если мы работаем в русской локали, > то дни недели и месяцы наверное всё-таки по-русски должны выдаваться. Нет? это такой геморрой склонять месяцы, что как мне помнится никому не захотелось с этим связываться. Попробуй с '/bin/date' поиграться. Мое мнение, что это проще сделать на уровне функций. > > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83 ---559023410-1929614923-1114795056=:4489--
>> Мне тут вопрос задали. >> Как сделать так чтобы to_char возвращал дату по-русски? >> Я так почитал доку и вижу что никак? >> >> А это считать багом или фичей? Вообще-то если мы работаем в русской >> локали, то дни недели и месяцы наверное всё-таки по-русски должны >> выдаваться. Нет? > > > это такой геморрой склонять месяцы, что как мне помнится никому не > захотелось с этим связываться. Попробуй с '/bin/date' поиграться. > Мое мнение, что это проще сделать на уровне функций. А зачем сколонять? Вот кто хочет склонять, тот пусть функции пишет, а дата и дни недели должны выдаться согласно функции strftime по системной локали. Пример: #include <stdio.h> #include <time.h> #include <locale.h> main() { char *buf; size_t size = 60; size_t len; time_t t; setlocale(LC_ALL, ""); t = time(NULL); buf = (char *)malloc(size); len = strftime(buf, size, "%d, %b (%A)", localtime(&t)); puts(buf); free(buf); return(0); } Результат выполнения: 03, Май (Вторник) Я думаю большинство вполне было бы довольно этим. В общем - снова баг. -- С уважением, Виктор
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-615069368-1115099093=:18597 Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8BIT On Tue, 3 May 2005, Viktor Vislobokov wrote: > >>> Мне тут вопрос задали. >>> Как сделать так чтобы to_char возвращал дату по-русски? >>> Я так почитал доку и вижу что никак? >>> >>> А это считать багом или фичей? Вообще-то если мы работаем в русской >>> локали, то дни недели и месяцы наверное всё-таки по-русски должны >>> выдаваться. Нет? >> >> >> это такой геморрой склонять месяцы, что как мне помнится никому не >> захотелось с этим связываться. Попробуй с '/bin/date' поиграться. >> Мое мнение, что это проще сделать на уровне функций. > > А зачем сколонять? > Вот кто хочет склонять, тот пусть функции пишет, а дата и дни недели должны > выдаться согласно функции strftime по системной локали. > Пример: > #include <stdio.h> > #include <time.h> > #include <locale.h> > > main() > { > char *buf; > size_t size = 60; > size_t len; > time_t t; > > setlocale(LC_ALL, ""); > > t = time(NULL); > > buf = (char *)malloc(size); > len = strftime(buf, size, "%d, %b (%A)", localtime(&t)); > puts(buf); > > free(buf); > return(0); > } > > Результат выполнения: > > 03, Май (Вторник) > > Я думаю большинство вполне было бы довольно этим. > В общем - снова баг. Это не баг, это руки не дошли. Там не так все просто, на самом деле. Ты даже не представляешь какие есть locale ! А просто для ru_RU вкрячить хак никто не позволит. > > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83 ---559023410-615069368-1115099093=:18597--
> > Это не баг, это руки не дошли. Там не так все просто, на самом деле. > Ты даже не представляешь какие есть locale ! А просто для ru_RU вкрячить > хак никто не позволит. Чего-то я в этой жизни не понимаю. Почему использование СТАНДАРТНОЙ функции strftime считается кряком, хаком и всем остальным? Что может быть естественнее? О соответствии локали в данном случае заботится сама ОС. -- С уважением, Виктор
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-761355704-1115114200=:18597 Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8BIT On Tue, 3 May 2005, Viktor Vislobokov wrote: > >> >> Это не баг, это руки не дошли. Там не так все просто, на самом деле. >> Ты даже не представляешь какие есть locale ! А просто для ru_RU вкрячить >> хак никто не позволит. > > Чего-то я в этой жизни не понимаю. Почему использование > СТАНДАРТНОЙ функции strftime считается кряком, хаком и > всем остальным? Что может быть естественнее? О соответствии > локали в данном случае заботится сама ОС. красиво говоришь. Я так тоже думал, про LIKE и индекс с не 'C' локале, пока Tom не привел примера локале, где индекс врет. Поэтому было принято решение индекс запретить, хотя для KOI8 все нормально и я даже где-то патч делал, чтобы можно было это включать. Ты хочешь этого и для timestamp ? Может я и ошибаюсь и всем просто влом. > > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83 ---559023410-761355704-1115114200=:18597--
>>> Это не баг, это руки не дошли. Там не так все просто, на самом деле. >>> Ты даже не представляешь какие есть locale ! А просто для ru_RU >>> вкрячить >>> хак никто не позволит. >> >> >> Чего-то я в этой жизни не понимаю. Почему использование >> СТАНДАРТНОЙ функции strftime считается кряком, хаком и >> всем остальным? Что может быть естественнее? О соответствии >> локали в данном случае заботится сама ОС. > > > красиво говоришь. Я так тоже думал, про LIKE и индекс с не 'C' локале, > пока Tom не привел примера локале, где индекс врет. Поэтому было принято > решение индекс запретить, хотя для KOI8 все нормально и я даже где-то > патч делал, чтобы можно было это включать. Ты хочешь этого и для > timestamp ? > Может я и ошибаюсь и всем просто влом. Хочу. Потому что это по крайней мере позволит найти и исправить ошибку в локали, если она там есть. По крайней мере хорошо было бы иметь возможность переключаться с латиницы на локализованный вывод месяцев и дней недели. Кстати по поводу склонений. Народ в основном пользуется аббревиатурами как для месяцев так и для дней недели. В этом случае, склонять вообще ничего не надо. -- С уважением, Виктор
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-977299526-1115192027=:18597 Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8BIT On Wed, 4 May 2005, Viktor Vislobokov wrote: > >>>> Это не баг, это руки не дошли. Там не так все просто, на самом деле. >>>> Ты даже не представляешь какие есть locale ! А просто для ru_RU вкрячить >>>> хак никто не позволит. >>> >>> >>> Чего-то я в этой жизни не понимаю. Почему использование >>> СТАНДАРТНОЙ функции strftime считается кряком, хаком и >>> всем остальным? Что может быть естественнее? О соответствии >>> локали в данном случае заботится сама ОС. >> >> >> красиво говоришь. Я так тоже думал, про LIKE и индекс с не 'C' локале, >> пока Tom не привел примера локале, где индекс врет. Поэтому было принято >> решение индекс запретить, хотя для KOI8 все нормально и я даже где-то >> патч делал, чтобы можно было это включать. Ты хочешь этого и для timestamp >> ? >> Может я и ошибаюсь и всем просто влом. > > Хочу. Потому что это по крайней мере позволит найти и исправить ошибку в > локали, если она там есть. да нет там ошибок, просто локали бывают сильно разные. > > По крайней мере хорошо было бы иметь возможность переключаться с > латиницы на локализованный вывод месяцев и дней недели. Кстати по поводу > склонений. Народ в основном пользуется аббревиатурами как для месяцев > так и для дней недели. В этом случае, склонять вообще ничего не надо. > ну, Виктор, "обрезанных" решений тоже не надо. Я думаю, что тот кто задавал этот вопрос уже давно написал функцию. Можно ведь написать на кучах языках, в конце-концов определи свой тип 'timetzlocale', напиши соответсвующие функции и используй CAST. А потом поделись с народом. > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83 ---559023410-977299526-1115192027=:18597--