Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Saigo                                2:5020/400     23 Aug 2001  11:58:14
 To : All
 Subject : Re: даты по-русски
 -------------------------------------------------------------------------------- 
 
 
 > А можно полную спецификацию этих модификаторов сюда? Что-то мне эта идея
 > нравится. У меня есть тоже задачка где это надо, и тоже на Perl.
 > Особенно интересно, как ты собираешься бороться с тем, что в разных
 > языках предусмотрен разный набор форм слова.
 
 ну, в первом приближении так (не знаю только, возможно ли это):
 %a1 - среда
 %a2 - Среда
 %a3 - СРЕДА
 %a4 - ср
 %a5 - Ср
 %a6 - СР
 
 %b1 - август(а)
 %b2 - Август(а)
 %b3 - АВГУСТ(А)
 %b4 - авг
 %b5 - Авг
 %b6 - Авг
 окончания (а) ставяться, если в формате есть модификатор даты, иначе - без
 (а)
 
 > Кстати, по поводу strftime хочу сразу предупредить что на разных
 > системах формат %B работает по-разному в русской локали.
 > Hа solaris он говорит "январь", а на Linux - "января"
 
 хм, не знала. видимо, проверять, что выдано и исправлять на то, что надо
 
 > S>то есть я должна переопределить функцию POSIX::strftime? а как?
 > S>я думала, что надо написать функцию, на входе строка формата и сама
 
 дата,
 
 > S>потом эта строка разбирается в поисках каких-то моих модификаторов и
 
 если
 
 > S>они есть, в результирующую строку добавляется то или иное значение. а
 
 вот
 
 > S>как при этом сделать так, чтобы строка сначала обрабатывалась
 
 стандартным
 
 > S>strftime, а потом уже моя функция обрабатывала только те модификаторы,
 
 > Видимо, делать так
 > $format=~ s/мои формат/\037%m\037/
 > $result= strftime($format, @date)
 > $result=~ s/\037(d+)\037/$recoder{$1}/
 > где recoder - хэш отображающий номера месяцев в их названия в правильной
 > форме.
 
 я что-то видимо не поняла. пишу так:
 
 use Time::Local;
 use POSIX qw(strftime);
 %recorder = ( '01' => 'января', '02' => 'февраля', '03' => 'марта', '04' =>
 'апреля', '05' => 'мая', '06' => 'июня', '07' => 'июля', '08' => 'августа',
 '09' => 'сентября', '10' => 'октября', '11' => 'ноября', '12' => 'декабря');
 @date=localtime;
 $format="%a %B %a1";
 $format=~s/\037%a1\037/\037%m\037/;
 $result=strftime($format,@date);
 $result=~s/\037(d+)\037/$recoder{$1}/;
 не работает. подскажите, пожалуйста, где я ошибаюсь.
 
 Евгения
 --- ifmail v.2.15dev5
  * Origin: Peterlink News System (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: даты по-русски   Saigo   23 Aug 2001 10:16:54 
 Re: даты по-русски   vitus@ice.ru   23 Aug 2001 11:05:30 
 Re: даты по-русски   Saigo   23 Aug 2001 11:58:14 
 Re: даты по-русски   vitus@ice.ru   23 Aug 2001 12:24:41 
Архивное /ru.perl/207537f3edacb.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional