The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"вычитание даты"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"вычитание даты"
Сообщение от gexa emailИскать по авторуВ закладки on 04-Окт-03, 13:17  (MSK)
Ребята подскажите в таком вопросе:
Есть в скрипте (perl) переменная:
$d = `date +%Y"-"%m"-"%d`; (это сегодняшняя дата)
# вида 2003-10-04
нужно в переменной $yesterday получить 2003-10-03
а например в переменной $four_day_ago 2003-09-30
То есть вопрос по сути как в таких случаях действовать
со вычитанием/прибавлением дат?
Подскажите пожалуйса.


  

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "вычитание даты"
Сообщение от ovax emailИскать по авторуВ закладки on 09-Окт-03, 03:51  (MSK)
Пользуйся функцией time и localtime.

$today = time;  # (текущее время в секундах)
$fourdaysago=$today - 86400*4 ; #86400 секунд в сутках * 4

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

Вот, собственно и всё.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "вычитание даты"
Сообщение от gara Искать по авторуВ закладки on 10-Окт-03, 22:17  (MSK)
еще глянь в сторону
use Date::Pcalc qw(:all);
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "вычитание даты"
Сообщение от Lorky emailИскать по авторуВ закладки on 16-Окт-03, 15:34  (MSK)
Добрый ДеньВечерНочер

По простому:
Переводишь свое время (2003-10-04) в секунды при помощи timelocal
затем вычитаешь от полученного чила нужное количество к примеру сутки 60*60*24
результат вычитания переводишь обратно в дату.

Вот небольшой пример подобного вычисления

#=============================================================
# вычисляет диапазон в сек между двумя датами/временем
sub TimeRange{
use Time::Local;

my (@par)=@_;
local $st,$et;
## localtime(sec,min,hour,day,mon,year)
$st=timelocal(@par[2],@par[1],@par[0],@par[3],(@par[4]-1),(@par[5]-1900));
$et=timelocal(@par[8],@par[7],@par[6],@par[9],(@par[10]-1),(@par[11]-1900));

return  int(($et-$st)/60);      #возвращаем колво минут
}
#=============================================================


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "вычитание даты"
Сообщение от denn emailИскать по авторуВ закладки on 16-Окт-03, 16:16  (MSK)
>Ребята подскажите в таком вопросе:
>Есть в скрипте (perl) переменная:
>$d = `date +%Y"-"%m"-"%d`; (это сегодняшняя дата)
># вида 2003-10-04
>нужно в переменной $yesterday получить 2003-10-03
>а например в переменной $four_day_ago 2003-09-30
>То есть вопрос по сути как в таких случаях действовать
>со вычитанием/прибавлением дат?
>Подскажите пожалуйса.
>
man date на предмет -v +|-


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру