Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > convert date->string


Автор: izver84 2.4.2010, 11:39
Здрасте.
Извините за нюбский вопрос.
Мне нужно конвертировать дату в строку.

Формат строки 'yymmdd'.
Например  сегодня  2 апреля  2010 года

Результат  '100402'
Как это правильно сделать? smile  


Автор: ginnie 2.4.2010, 12:03
izver84, а если подумать? Создаем хэш месяцев и конвертируем:
Код

my %monthes = ('января' => 1, 'февраля' => 2, 'марта' => 3, 'апреля' => 4, 'мая' => 5,
 'июня' => 6, 'июля' => 7, 'августа' => 8, 'сентября' => 9, 'октября' => 10, 'ноября' => 11, 'декабря' => 12);
my $orig_date = '2 апреля  2010 года';
my @date_parts = split /\s+/, $orig_date;
$date_parts[1] = $monthes{$date_parts[1]};
$date_parts[2] -= 2000;
my $conv_date = sprintf('%0.2d' x 3, @date_parts[2,1,0]);

Автор: izver84 6.4.2010, 11:03
решил
Код

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time()); 
$mont=$mon+1;
$dayt=$mday;
if ($mont<10) {
$smont="0$mont";
}
else {
$smont="$mont";
}

if ($dayt<10){
$sday="0$dayt";
}else {
$sday="$dayt";
}
$year += 1900;
$date="$year$smont$sday";
$date=substr($date,2);



Автор: NuINu 6.4.2010, 11:42
наверное даже работает. попробуйте найти что нибудь полезное в коде ginnie - код сократиться процентов на 90

да забыл сказать, работая в перле без обявлений типа my
и без прагмы warnings и strict вы зарабатываете себе геморой появляющийся от простейших синтаксических ошибок (типа неправильно набил имя переменной)
используйте их, сэкономите кучу времени

Автор: mvsgt 6.4.2010, 18:52
Правильно - это так:

Код

#!perl -w
use strict;
use Time::CTime;
print strftime( '%y%m%d', localtime(time));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)