shoorick: (Default)
[personal profile] shoorick
Наткнулся в кукбуке перловой книге на пример парсинга дат. Попробовал. Не получилось: модуль Date::Manip хотел предварительной ласки настройки в виде указания часового пояса. Попутно, глядя на perldoc и исходники модуля, указал в настройках русский язык и начал скармливать даты скрипту:
#!/usr/bin/perl -w

use POSIX 'strftime';
use Date::Manip qw(Date_Init ParseDate UnixDate);

Date_Init('TZ=+0600', 'Language=Russian', 'DateFormat=non-US');

while (<>)	{
	my $date = ParseDate($_);
	if (!$date)	{
		warn "Bad date\n";
		next;
	}
	else	{
		my ($y, $m, $d) = UnixDate($date, '%Y', '%m', '%d');
		print "Date: $d.$m.$y\n";
	} # else
} # while
Выяснил, что скрипт действительно понимает русский язык. Во всяком случае, даты заданные словами: «1 мая», «пятнадцатое марта», «сегодня» и «вчера» — он понимает. Хотя понимает не всё: на английском корректно распознались даты «2 weeks ago» и «1st monday in september», а аналогичные по-русски — нет.

Распознавание RU дат

Date: 2007-10-19 08:48 am (UTC)
From: (Anonymous)
Shoorick, у тебя какая версия пакета Data::Manip? Я что-то пытаюсь с русской строки распарсить, но ни чего не получается. Использую Версию 5.42.
На английском всё работает, если сменить параметры Date_Init().

Profile

shoorick: (Default)
shoorick

December 2016

S M T W T F S
    1 23
45678910
11121314151617
18 19 2021222324
25262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 16th, 2025 12:19 am
Powered by Dreamwidth Studios