Получить вчерашнюю дату
От: Vand  
Дата: 03.10.06 04:34
Оценка:
Привет Всем!

Есть ли какая-нибудь функция для того, чтобы получить вчерашнюю дату?
С учетом смены месяца и года.

Спасибо за ответы

03.10.06 11:20: Перенесено модератором из 'C/C++' — Кодт
Re: Получить вчерашнюю дату
От: SWW Россия  
Дата: 03.10.06 04:37
Оценка:
V>Есть ли какая-нибудь функция для того, чтобы получить вчерашнюю дату?
V>С учетом смены месяца и года.

Все зависит от того, в каком виде хранится сегодняшняя...
Re: Получить вчерашнюю дату
От: np9mi7 Россия  
Дата: 03.10.06 05:10
Оценка: 2 (1)
Здравствуйте, Vand, Вы писали:

V>С учетом смены месяца и года.


#include <ctime>
#include <cstdio>

int main ()
{
    const time_t Time (time 
        (NULL));
   
    struct tm * LocalTime (localtime 
        ( & Time));
   
    printf ("Current Date Year: %i Month: %i Day: %i", LocalTime->tm_year + 1900, 
        LocalTime->tm_mon, LocalTime->tm_mday);

    return 0;
}
, и плясать относительно этого;

Или смотреть в сторону http://boost.org/doc/html/date_time.html;
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
"В любое мгновение принятия решения, лучшее, что вы можете сделать, это принять правильное решение; следующим лучшим вариантом будет принять неправильное решение, худший вариант – не принимать решения совсем" (c) Теодор Рузвельт.
Re: Получить вчерашнюю дату
От: Centaur Россия  
Дата: 03.10.06 05:28
Оценка: 1 (1)
Здравствуйте, Vand, Вы писали:

V>Есть ли какая-нибудь функция для того, чтобы получить вчерашнюю дату?

V>С учетом смены месяца и года.

Как уже где-то здесь обсуждалось — нужно выполнить Sleep(-84600000) и взять текущую. Потом вернуть время на место.

Серьёзно же — берём текущую дату, отнимаем от неё один день. Для всех вменяемых форматов хранения дат это легко. Нет, строка вида "03/05/06" к вменяемым форматам не относится. Структура { int year, month, day } — тоже, это только входной/выходной формат для удобства пользователя. Внутри должны быть либо целые секунды/миллисекунды, либо вещественные дни от начала эпохи.
Re[2]: Получить вчерашнюю дату
От: Vand  
Дата: 03.10.06 07:02
Оценка:
Здравствуйте, np9mi7, Вы писали:

N>Здравствуйте, Vand, Вы писали:


V>>С учетом смены месяца и года.


N>
N>#include <ctime>
N>#include <cstdio>

N>int main ()
N>{
N>    const time_t Time (time 
N>        (NULL));
   
N>    struct tm * LocalTime (localtime 
N>        ( & Time));
   
N>    printf ("Current Date Year: %i Month: %i Day: %i", LocalTime->tm_year + 1900, 
N>        LocalTime->tm_mon, LocalTime->tm_mday);

N>    return 0;
N>}
N>
, и плясать относительно этого;


N>Или смотреть в сторону http://boost.org/doc/html/date_time.html;


Спасибо!
Я сделал через CTime и CTimeSpan.

CTime time = CTime::GetCurrentTime();
time -= CTimeSpan(1,0,0,0);


Теперь нужно перевести в двухбайтное шестнадцатиричное число.
Пробую
char buffer[2];
_itoa(time.GetDay(),buffer,16);

Работает, но пишет в buffer[0].
buffer[1] соответственно пустой.

Может есть какая-нибудь функция для форматирования с указания необходимых символов?
Re: Получить вчерашнюю дату
От: Аноним  
Дата: 03.10.06 07:31
Оценка: :)
Здравствуйте, Vand, Вы писали:

V>Привет Всем!


V>Есть ли какая-нибудь функция для того, чтобы получить вчерашнюю дату?

V>С учетом смены месяца и года.

Это уже спрашивали.
sleep(-86400);
time_t yesterday = time();
sleep(86400);
Re[3]: Получить вчерашнюю дату
От: ДимДимыч Украина http://klug.org.ua
Дата: 03.10.06 08:50
Оценка: 2 (1)
Здравствуйте, Vand, Вы писали:

V>Теперь нужно перевести в двухбайтное шестнадцатиричное число.

V>Может есть какая-нибудь функция для форматирования с указания необходимых символов?

sprintf()
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[2]: Получить вчерашнюю дату
От: jazzer Россия Skype: enerjazzer
Дата: 03.10.06 13:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Vand, Вы писали:


V>>Привет Всем!


V>>Есть ли какая-нибудь функция для того, чтобы получить вчерашнюю дату?

V>>С учетом смены месяца и года.

А>Это уже спрашивали.

А>
А>sleep(-86400);
А>time_t yesterday = time();
А>sleep(86400);
А>


Вот вы зубоскалите, а это реально работает, только надо не sleep звать, а просто переставлять временную зону.
Во всяких скриптах это работает на ура, типа setenv TZ=GMT-24 и т.д.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Получить вчерашнюю дату
От: VCoder http://wxbar.sf.net
Дата: 04.10.06 08:59
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Это уже спрашивали.

А>
А>sleep(-86400);
А>time_t yesterday = time();
А>sleep(86400);
А>


Обман — так не работает
Нужно так:
time_t yesterday = time();
sleep(86400);
// теперь в yesterday - вчерашняя дата  :)


С уважением,
Дмитрий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.