Программирование > Perl

Увеличение даты

<< < (6/6)

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 сек)

Навигация

[0] Главная страница сообщений

[*] Предыдущая страница

Sitemap 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 
Перейти к полной версии