Re: вот хотел спросить у общественности

From
Mykola Dzham (2:5020/400)
To
Vladimir Marunin
Date
2005-08-19T01:15:26Z
Area
RU.PERL
From: Mykola Dzham <i.in.news@levsha.org.ua>

 Vladimir Marunin wrote:
> 
> "Max Kuznetsov" <Max.Kuznetsov@p101.f845.n5020.z2.fidonet.org> сообщил в 
> новостях
> 
> > A> дату изменить текущую на определенное количество дней
> > A> я вот так в лобсделал но сие не красиво
> > A> и потом формат не совпадает для однозначных дат получается
> > A> 2005-08-1
> > A> а надо бы 2005-08-01
> >
> > A> $datestamp = strftime "%Y-%m-%d_%H:%M:%S", localtime;
> > A> print $datestamp, "\n";
> >
> > A> my $date_tek_y_m = strftime "%Y.%m.", localtime;
> > A> my $date_tek_d = strftime "%d", localtime;
> > A> my $d=1;
> > A> $date_tek = $date_tek_y_m.($date_tek_d-$d);
> >
> > A> print $date_tek, "\n" ;
> >
> > Если тебе надо просто получеть строку с исомой датой, то просто localtime
> > прибавляешь или отнимаешь колшичествао дней * 86400 и выводишь в нужном 
> > формате
> >
> > $time = localtime + (86400 * $d);
> > $datestamp = strtftime "%Y-%m-%d_%H:%M:%S", $time;
> > print $datestamp, "\n";
> 
> Непарвда твоя. Далеко не во всех сутках  86400 секунд. Дважды в год это не 
> верно (переход с зимнего на летнее время и наоборот), поэтому если сейчас 
> время около полуночи (от 23:00 до 01:00) то такая схема может дать ошибку на 
> сутки.

Поэтому надо все расчеты делать в unixtime: там таки во всех сутках
60*60*24 секунда.

> Или возьми нормальный модуль для работы с данными (лучше),
> либо проверяй время на полночь, например так:
> 
> $time = time() + (86400 * $d) +(12 - (localtime())[2] )*3600;
> datestamp = strtftime "%Y-%m-%d_%H:%M:%S", $time;
> 
> Тут идея в том, чтобы брать середину суток (я вычитаю текущие часы и 
> прибавляю 12).

По моему тут не идея а неясность задачи. В частности если заявляется
что нужно получить дату "через столько то суток" то зачем вообще
обращать внимание на время?

-- 
LEFT-(UANIC|RIPE)
JID: levsha@jabber.kiev.ua
--- ifmail v.2.15dev5.3
 * Origin: National Taras Shevchenko University of Kyiv (2:5020/400)
SEEN-BY: 50/203 520 400/462 814 450/159 186 451/30 461/43 132 640 469/999
SEEN-BY: 4616/3 4625/8 4627/10 4635/4 4641/444 5000/76 5000 5001/5001 5006/1
SEEN-BY: 5007/1 5010/53 70 5012/8 46 5015/10 5020/118 154 175 194 400 545 549
SEEN-BY: 5020/715 758 830 982 1057 1523 1604 1665 1922 2013 2020 2142 2238
SEEN-BY: 5020/2590 4441 5021/3 29 5022/128 5025/3 750 5026/14 49 5027/16
SEEN-BY: 5030/49 115 436 556 966 1063 1339 1900 5031/47 70 5033/21 5035/3
SEEN-BY: 5036/1 5040/47 5042/13 5045/7 5049/1 5051/15 5053/16 5054/1 8 9 35 36
SEEN-BY: 5054/37 45 66 67 81 85 5057/1 5059/9 5060/3 88 5061/15 120 5062/1 10
SEEN-BY: 5064/39 5066/18 5069/7 5070/1222 5075/5 5077/70 80 5080/80 1003
SEEN-BY: 5081/2 5082/6 5083/21 5085/13 5090/108 113 5095/20 5096/18 6000/12
SEEN-BY: 6001/3
PATH: 5020/400 4441 545 5054/1 37