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

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

<< < (2/6) > >>

Yaroslav:

--- Цитировать ---AliMamed:
посчитать количество секунд в количестве дней и прибавить.
--- Конец цитаты ---

это первое что пришло в голову, но в таком случае скрипт получается очень громозкий, так как нужно учитывать не только месяцы, но и высокосный год.

--- Цитировать ---commander:

--- Конец цитаты ---
спасибо за пример, как раз он и страдает всеми перечисленными выше проблемами.

commander:
Yaroslav
пардон... немного не так... :
#!/usr/bin/perl -w
use strict;
use Time::Local;
my $date="2004-02-29";
my ($year, $mon, $day) = split/\\-/, $date;
$mon-=1;
my $unix_time=timelocal(0, 0, 0, $day, $mon, $year);
$unix_time+=86400; #ïðèáàâëÿåì îäèí äåíü...
($day, $mon, $year) = ((localtime($unix_time))[3,4,5]);
$year+=1900;
$mon+=1;
$date= sprintf("%04d-%02d-%02d", $year, $mon, $day);
print "$date";

на этот пример никаких проверок на високосный год ставить не НАДО!!!
perldoc Time::Local

в следующий раз прежде чем бросаться сорказными словоизлеяниями... вроде этого:

--- Цитировать ---спасибо за пример, как раз он и страдает всеми перечисленными выше проблемами
--- Конец цитаты ---

попробуйте разобраться в ответе... :)

NeoNox:
Можно и так, но проще всего:
print localtime(time);                #сейчас
print localtime(time+24*60*60);#завтра
print localtime(time+24*60*60*2);    #послезавтра
а дальше делай что хочеш.

Yaroslav:
Хорошо быть новичком. :)
Искал одно, нашел другое. Посмотрите, как такой вариант?
Я правда с трудом соображаю что он делает, но без 2 и 3 строчки работать не хочет.
use HTTP:: Date;
$string = time2str($time);
$time = str2time($string);
$time1=$time+186400;
$string2 = time2str($time1);

Меняздесьдавнонет:
этот способ подвержен тем же проблемам, что ты перечислил.
примерный способ тебе сказали.
Для точных тебе привели модуль. Пользуйся им.
Или ты хочешь, чтобы тебе здесь написали код этого модуля со всеми проверками на кол-во дней, високосность и переход на летнее время?

Навигация

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