Re: Date::Manip
Sep. 12th, 2007 09:21 pmЧтение исходников показало, что всё не так уж плохо: Date::Manip и по-русски кой-чё понимает, справляясь с такими датами как «первый четверг» → 04.01.2007, «следующий вторник» → 18.09.2007, «вперед на 2 года» → 12.09.2009, «назад на 2 дня» → 10.09.2007, «назад на 2 недели» → 29.08.2007, «первый среда мая» → 02.05.2007, «3 вторник марта 77» → 15.03.1977... Осталось ещё научить его всем падежам — и будет вообще хорошо.
Хэш русских строк из Date::Manip
{
‘next’ => [
‘следующий’
],
‘sepss’ => ‘[:.с]’,
‘day_name’ => [
[
‘понедельник’,
‘вторник’,
‘среда’,
‘четверг’,
‘пятница’,
‘суббота’,
‘воскресенье’
]
],
‘on’ => [
‘в’
],
‘day_char’ => [
[
‘пн’,
‘вт’,
‘ср’,
‘чт’,
‘пт’,
‘сб’,
‘вс’
]
],
‘month_name’ => [
[
‘января’,
‘февраля’,
‘марта’,
‘апреля’,
‘мая’,
‘июня’,
‘июля’,
‘августа’,
‘сентября’,
‘октября’,
‘ноября’,
‘декабря’
],
[
‘январь’,
‘февраль’,
‘март’,
‘апрель’,
‘май’,
‘июнь’,
‘июль’,
‘август’,
‘сентябрь’,
‘октябрь’,
‘ноябрь’,
‘декабрь’
]
],
‘years’ => [
‘г’,
‘гд’,
‘год’,
‘лет’,
‘лет’,
‘года’
],
‘future’ => [
‘вперед на’
],
‘business’ => [
‘рабочих’
],
‘past’ => [
‘назад на ’
],
‘month_abb’ => [
[
‘янв’,
‘фев’,
‘мрт’,
‘апр’,
‘май’,
‘июн’,
‘июл’,
‘авг’,
‘снт’,
‘окт’,
‘нояб’,
‘дек’
],
[
‘’,
‘фвр’,
‘’,
‘',
’мая’,
‘’,
‘',
’',
‘сен’,
‘окт’,
‘ноя’,
‘’
]
],
‘num_suff’ => [
[
‘1 ’,
‘2 ’,
‘3 ’,
‘4 ’,
‘5 ’,
‘6 ’,
‘7 ’,
‘8 ’,
‘9 ’,
‘10 ’,
‘11 ’,
‘12 ’,
‘13 ’,
‘14 ’,
‘15 ’,
‘16 ’,
‘17 ’,
‘18 ’,
‘19 ’,
‘20 ’,
‘21 ’,
‘22 ’,
‘23 ’,
‘24 ’,
‘25 ’,
‘26 ’,
‘27 ’,
‘28 ’,
‘29 ’,
‘30 ’,
‘31 ’
]
],
‘hours’ => [
‘ч’,
‘ч.’,
‘чс’,
‘чсв’,
‘час’,
‘часов’,
‘часа’
],
‘each’ => [
‘каждый’
],
‘minutes’ => [
‘мн’,
‘мин’,
‘минута’,
‘минут’
],
‘sepms’ => ‘[:м]’,
‘replace’ => [],
‘pm’ => [
‘пп’,
‘ПП’,
‘П.П.’,
‘дня’,
‘вечера’,
‘после полудня’,
‘по полудню’
],
‘sephm’ => ‘[:ч]’,
‘num_word’ => [
[
‘первый’,
‘второй’,
‘третий’,
‘четвертый’,
‘пятый’,
‘шестой’,
‘седьмой’,
‘восьмой’,
‘девятый’,
‘десятый’,
‘одиннадцатый’,
‘двенадчатый’,
‘тренадцатый’,
‘четырнадцатый’,
‘пятнадцатый’,
‘шестнадцатый’,
‘семьнадцатый’,
‘восемьнадцатый’,
‘девятнадцатый’,
‘двадцатый’,
‘двадцать первый’,
‘двадцать второй’,
‘двадцать третий’,
‘двадцать четвертый’,
‘двадцать пятый’,
‘двадцать шестой’,
‘двадцать седьмой’,
‘двадцать восьмой’,
‘двадцать девятый’,
‘тридцатый’,
‘тридцать первый’
],
[
‘первое’,
‘второе’,
‘третье’,
‘четвертое’,
‘пятое’,
‘шестое’,
‘седьмое’,
‘восьмое’,
‘девятое’,
‘десятое’,
‘одиннадцатое’,
‘двенадцатое’,
‘тренадцатое’,
‘четырнадцатое’,
‘пятнадцатое’,
‘шестнадцатое’,
‘семьнадцатое’,
‘восемьнадцатое’,
‘девятнадцатое’,
‘двадцатое’,
‘двадцать первое’,
‘двадцать второе’,
‘двадцать третье’,
‘двадцать четвертое’,
‘двадцать пятое’,
‘двадцать шестое’,
‘двадцать седьмое’,
‘двадцать восьмое’,
‘двадцать девятое’,
‘тридцатое’,
‘тридцать первое’
],
[
‘первого’,
‘второго’,
‘третьего’,
‘четвертого’,
‘пятого’,
‘шестого’,
‘седьмого’,
‘восьмого’,
‘девятого’,
‘десятого’,
‘одиннадцатого’,
‘двенадцатого’,
‘тренадцатого’,
‘четырнадцатого’,
‘пятнадцатого’,
‘шестнадцатого’,
‘семьнадцатого’,
‘восемьнадцатого’,
‘девятнадцатого’,
‘двадцатого’,
‘двадцать первого’,
‘двадцать второе’,
‘двадцать третьего’,
‘двадцать четвертого’,
‘двадцать пятого’,
‘двадцать шестого’,
‘двадцать седьмого’,
‘двадцать восьмого’,
‘двадцать девятого’,
‘тридцатого’,
‘тридцать первого’
]
],
‘months’ => [
‘мес’,
‘месяц’,
‘месяцев’
],
‘day_abb’ => [
[
‘пнд’,
‘втр’,
‘срд’,
‘чтв’,
‘птн’,
‘суб’,
‘вск’
],
[
‘пон’,
‘вто’,
‘срe’,
‘чет’,
‘пят’,
‘суб’,
‘воск’
]
],
‘of’ => [
‘ ’
],
‘later’ => [
‘позже’
],
‘seconds’ => [
‘с’,
‘сек’,
‘секунда’,
‘секунд’
],
‘am’ => [
‘дп’,
‘П’,
‘.П.’,
‘ночи’,
‘утра’,
‘до полудня’
],
‘at’ => [
‘в’
],
‘offset’ => [
‘позавчера’,
‘-0:0:0:2:0:0:0’,
‘вчера’,
‘-0:0:0:1:0:0:0’,
‘завтра’,
‘+0:0:0:1:0:0:0’,
‘послезавтра’,
‘+0:0:0:2:0:0:0’
],
‘prev’ => [
‘предыдущий’
],
‘approx’ => [
‘примерно’
],
‘last’ => [
‘последний’
],
‘exact’ => [
‘точно’
],
‘days’ => [
‘д’,
‘день’,
‘дней’,
‘дня’
],
‘today’ => [
‘сегодня’
],
‘now’ => [
‘сейчас’
],
‘times’ => [
‘полдень’,
‘12:00:00’,
‘полночь’,
‘00:00:00’
],
‘weeks’ => [
‘неделя’,
‘недель’,
‘недели’,
‘неделю’
]
};