LINUX.ORG.RU

Ещё один вопрос по Perl


0

0

В программировании я слабо шарю, подскажите пожалуста, как узнать предыдущую дату? Например сегодня 01 число N-ного месяца. А мне нужно число предыдущего месяца. Можно ли такое как-нть красиво сделать?

Спасибо.

не знаю как там в перле, но обычно это делается примерно так:

перевести текстовую строку (запись с временем и еще что-либо подобное) в юникс-время в секундах (кол-во секунд начиная с какого-то древнего года по нужный день), вычесть из этого времени 24 * 60 * 60 секунд, преобразовать время в нужный вам формат (запись, текстовая строка), если же ваш ЯП имеет классы для работы с датой-временем, то еще более все упрощается, курите доки по вашему ЯП

зы: если че напутал с терминологией, звиняйте, не программер, просто сочуствующий :)

anonymous
()
Ответ на: комментарий от anonymous

>не знаю как там в перле, но обычно это делается примерно так:
>перевести текстовую строку (запись с временем и еще что-либо
>подобное) в юникс-время в секундах (кол-во секунд начиная с
>какого-то древнего года по нужный день), вычесть из этого времени 24
>* 60 * 60 секунд, преобразовать время в нужный вам формат (запись,
>текстовая строка), если же ваш ЯП имеет классы для работы с


Вы наверное имели в виду отнять 30 дней от данного числа. А что делать с первым февралем? А с месяцами с тридцати одним днем?

my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
--$mon;

и, если нужно, переобразовываем в нужный формат.

phrm ★★
()
Ответ на: комментарий от phrm

> my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = 
> localtime(time);
> --$mon; 

А на секунды это распростарняется?
Я попробовал сделать для секунд --$sec и получил -1... 

Scriman
() автор топика
Ответ на: комментарий от Scriman

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

phrm ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.