URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5218
[ Назад ]

Исходное сообщение
"вывести период дат"

Отправлено greenetc , 09-Мрт-06 18:03 
нужно высести период дат списком с DATE_1 по DATE_2 по дням в формате месяц - день ... т.е приблизительно так
02 - 01
02 - 02
02 - 03
02 - 04
.... и т.д. начальная дата жестко задана в программе (DATE_1) а вот конечная  (DATE_2) идет как текущая ... как сделать такое , подскажите плиз .

Содержание

Сообщения в этом обсуждении
"вывести период дат"
Отправлено BsDr , 09-Мрт-06 18:24 
>нужно высести период дат списком с DATE_1 по DATE_2 по дням в
>формате месяц - день ... т.е приблизительно так
>02 - 01
>02 - 02
>02 - 03
>02 - 04
>.... и т.д. начальная дата жестко задана в программе (DATE_1) а вот
>конечная  (DATE_2) идет как текущая ... как сделать такое ,
>подскажите плиз .

man time
man localtime
man strftime


"вывести период дат"
Отправлено jelnw , 10-Мрт-06 03:56 
Я так делаю:

#define TS_STR_LEN 20
#define TS_STR_FMT "%d.%m.%Y %H:%M:%S"

///////////////////////////////////////////////////////////////
static char ts[TS_STR_LEN];

char *tstamp () {
    time_t t = time (NULL);
    struct tm *lt = localtime (&t);
    size_t n = strftime (ts, TS_STR_LEN, TS_STR_FMT, lt);
    return (ts);
}

Это возврат текущего времени/даты в нужном формате.



"вывести период дат"
Отправлено sandy , 10-Мрт-06 12:17 
У меня есть класс Date к которому я прикрутил оператор ++
Если очень нужно, - вышлю

"вывести период дат"
Отправлено greenetc , 10-Мрт-06 16:13 
>У меня есть класс Date к которому я прикрутил оператор ++
>Если очень нужно, - вышлю

очень нужно .... буду очень благодарен. green-etc@mail.zp.ua
а ++ работает только к дням, или и к месяцам и годам ?


"вывести период дат"
Отправлено sandy , 13-Мрт-06 16:39 
>>У меня есть класс Date к которому я прикрутил оператор ++
>>Если очень нужно, - вышлю
>
>очень нужно .... буду очень благодарен. green-etc@mail.zp.ua
>а ++ работает только к дням, или и к месяцам и годам
>?

Класс Date работает следующим образом:
Date d // Текущая системная дата
Date d(28,03,1975) // заданная дата
++ добаляет int 1 к дате, в случае перехода из одного месяца в другой или из года в следующий, вроде бы работает корректно.
есть также операторы --, +=, -=, ==, !=
У класса есть члены: Day, Dow, Month, Year и Output, который выводи дату в формате дд/мм/гггг.

вашу прогу можно было-бы оформить примерно так:

#include <datetime.h>

int main()
{
  Date today;
  Date d(d,m,y);
  while (d!=today) {
    d.Output();
    d++;
  }
  today.Output();
  return 0;
}


"вывести период дат"
Отправлено sandy , 13-Мрт-06 16:43 
Вдогонку, если нужно вывести дату в ином, нужном для Вас формате, можно вывестиее таким образом:

Date d;
printf("%d.%d.%d\n", d.Day(), d.Month(), d.Year());

Вышлю исходники завтра


"вывести период дат"
Отправлено sandy , 13-Мрт-06 16:49 
Вдогонку, если нужно вывести дату в ином, нужном для Вас формате, можно вывестиее таким образом:

Date d;
printf("%d.%d.%d\n", d.Day(), d.Month(), d.Year());

Вышлю исходники завтра


"вывести период дат"
Отправлено greenetc , 10-Мрт-06 16:18 
>нужно высести период дат списком с DATE_1 по DATE_2 по дням в
>формате месяц - день ... т.е приблизительно так
>02 - 01
>02 - 02
>02 - 03
>02 - 04
>.... и т.д. начальная дата жестко задана в программе (DATE_1) а вот
>конечная  (DATE_2) идет как текущая ... как сделать такое ,
>подскажите плиз .

получить текущую дату не проблема ...
мне нужно сделать список из дат в правильном формате начиная с заданой даты (прошлая) и до текущей (собственно текущая дата и нужна лишь для того, чтобы получить предел вывода, так как нужно вывести только месяц, или там 10 дней например)... пока только я получил текущую ... а потом с этим списком (а точнее с двумя, задав в одном начальную дату , а в другом конечную )что бы можно было вычислить разницу между ними в днях (ну или часах) ...