Программирование > Perl
Увеличение даты
NeoNox:
--- Цитировать ---Yaroslav:
хоть скажите с помощью localtime(time) это возможно сделать
--- Конец цитаты ---
Запросто.
Береш карандаш в руку и пишеш сначала на бумаге алгоритм.
Потом реализуеш его на Perl/
Вот и все.
--- Цитировать ---Yaroslav:
или только Date::Calc мне поможет?
--- Конец цитаты ---
В этом модуле уже есть все что тебе нужно:
http://search.cpan.org/~stbey/Date-Calc-5.3/Calc.pod#RECIPES
NeoNox:
Yaroslav кстати прямо для тебя неаписано в факе:
perldoc -q date
Yaroslav:
Спасибо AliMamed и Огромное спасибо NeoNox
за монотонное обьяснение что формат даті должен хранится в "time". теперь это выглядит так:
(..,..,..,..,$newdata,$lastdata,..)=split(/`/,$file);
$dey=int(($lastdata-$newdata)/24/60/60);
($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime($newdata); $year+=1900; $mon+=1;
($sec,$min,$hour,$mday,$mon,$year,$wday)=localtime($lastdata); $year+=1900; $mon+=1;
DamonLSD:
--- Цитировать ---Yaroslav:
еще такой вопрос. если есть дата к примеру 20-05-2004
можно ли сравнить ее с localtime(time) что б разница выводилась в количистве дней?
--- Конец цитаты ---
ВСЕМ привет! :)
на днях тоже столкнулся с вычислением разницы двух дат и конечно же хотелось обойтись стандартными модулями. Вот, что у меня получилось ... может кому-то пригодицца
#!D:/www/Perl/bin/perl.exe
print "Content-type: text/html; charset=windows-1251\\n\\n";
use strict;
use Time::Local;
# Текущая дата
my ($sec,$min,$hrn,$day,$mon,$yrn,$wkn,$ydn,$dst) = localtime(time);
$mon = $mon+1;
if ($mon < 10) {$mon = "0$mon";}
if ($day < 10) {$day = "0$day";}
if ($hrn < 10) {$hrn = "0$hrn";}
if ($min < 10) {$min = "0$min";}
if ($sec < 10) {$sec = "0$sec";}
$yrn = 1900 + $yrn;
my $date= "$day\\-$mon\\-$yrn";
my $time= "$hrn\\:$min\\:$sec";
# Начальная дата
my $begDate = "01-01-2009";
# Конечная дата
my $endDate = "01-01-2010";
# Парсим начальную дату на день месяц и год, разделитель "-"
my ($beg1, $beg2, $beg3) = split (/-/,$begDate);
# Парсим конечную дату на день месяц и год, разделитель "-"
my ($end1, $end2, $end3) = split (/-/,$endDate);
# Вычисляем сколько прошло секунд до начальной даты
my $begDateSec = timelocal(0, 0, 0, $beg1, $beg2-1, $beg3);
# Вычисляем сколько прошло секунд до конечной даты
my $endDateSec = timelocal(0, 0, 0, $end1, $end2-1, $end3);
# Вычисляем разницу в секундах от начальной даты до конечной
my $difDateSec = $endDateSec - $begDateSec;
# Вычисляем разницу в сутках от начальной даты до конечной
my $difDateSut = $difDateSec / 86400;
# Вывод результатов
print "Текущая дата: $date $time (" . time . " сек)";
print "
";
print "Начальная дата: $begDate ($begDateSec сек)";
print "
";
print "Конечная дата: $endDate ($endDateSec сек)";
print "
";
print "Разница: $difDateSut сут ($difDateSec сек)";
Результат
Текущая дата: 08-02-2009 20:56:52 (1234115812 сек)
Начальная дата: 01-01-2009 (1230757200 сек)
Конечная дата: 01-01-2010 (1262293200 сек)
Разница: 365 сут (31536000 сек)
Навигация
Перейти к полной версии