|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vladimir Marunin 2:5020/400 18 Aug 2005 16:35:19 To : Max Kuznetsov Subject : Re: вот хотел спросить у общественности -------------------------------------------------------------------------------- "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"; Hепарвда твоя. Далеко не во всех сутках 86400 секунд. Дважды в год это не верно (переход с зимнего на летнее время и наоборот), поэтому если сейчас время около полуночи (от 23:00 до 01:00) то такая схема может дать ошибку на сутки. Или возьми нормальный модуль для работы с данными (лучше), либо проверяй время на полночь, например так: $time = time() + (86400 * $d) +(12 - (localtime())[2] )*3600; datestamp = strtftime "%Y-%m-%d_%H:%M:%S", $time; Тут идея в том, чтобы брать середину суток (я вычитаю текущие часы и прибавляю 12). Vladimir Marunin --- ifmail v.2.15dev5.3 * Origin: RTComm.RU (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/9181428c6297.html, оценка из 5, голосов 10
|