Конверт. DATE в time_t и наоборот
От: Shad Россия  
Дата: 11.02.03 03:59
Оценка:
Привет All!
Помогите плиз разобраться с сабжем.
Имхо таких функций в ансишной библиотеке нету .
По крайней мере я провел в бесплодных поисках ( ) не один час (MSDN).
Так что жду ваших ответов.
Заранее спасибо.

11.02.03 12:40: Перенесено модератором из 'C/C++' — ПК
Re: Конверт. DATE в time_t и наоборот
От: filkov СССР  
Дата: 11.02.03 04:23
Оценка:
Здравствуйте, Shad, Вы писали:
S>Имхо таких функций в ансишной библиотеке нету .
И я таких не знаю. Когда мне, помнится, требовалось подобное преобразование, я пользовался Typecast from DATE to COleDateTime. MFC, соответственно.

А вот здесь исходник подобной утилитки.
Санкционный Смотритель.
Re[2]: Конверт. DATE в time_t и наоборот
От: Shad Россия  
Дата: 11.02.03 04:48
Оценка:
Здравствуйте, filkov, Вы писали:


F>И я таких не знаю. Когда мне, помнится, требовалось подобное преобразование, я пользовался Typecast from DATE to COleDateTime. MFC, соответственно.


Спсибо большое за оперативный ответ, но к сожалению я воспользоваться им не могу, т.к. мне нужно
чисто ансёвую вещь написать, т.е. без MFC абсолютно
Мож чего еще подскажете?
Re[3]: Конверт. DATE в time_t и наоборот
От: filkov СССР  
Дата: 11.02.03 06:24
Оценка:
Здравствуйте, Shad, Вы писали:

S>Мож чего еще подскажете?

Platform SDK: Automation
Date and Time Conversion Functions
The following functions are provided by Oleaut32.dll

DosDateTimeToVariantTime()
VariantTimeToDosDateTime()
VariantTimeToSystemTime()
...
Ili rukami razlomat', vydrat' kod iz MFC.
Санкционный Смотритель.
Re: Конверт. DATE в time_t и наоборот
От: IgorK Россия  
Дата: 11.02.03 06:33
Оценка: 5 (2)
Здравствуйте, Shad, Вы писали:

S>Помогите плиз разобраться с сабжем.

S>Имхо таких функций в ансишной библиотеке нету .
Естесственно — тип DATE не определен в стандартной библиотеке.
S>По крайней мере я провел в бесплодных поисках ( ) не один час (MSDN).
S>Так что жду ваших ответов.

Исходные данные:

DATE — тип данных с плавающей точкой, показывающий количество прошедших дней с 30 Декабря 1899 00:00 (1)
time_t — целочистленный тип данных, показывающий количество прошедших секунд с 1 Января 1970 00:00 (2)

Разница между датами (1) и (2) составляет 25569 дней. В одном дне 86400 секунд. Максимальное количество дней, которое может содержать time_t = 49710 (2^32 / 86400).

Получаем:


time_t DATE2time_t(DATE d)
{
    time_t t;

    if( (d <= 25569.0) || (d >= 49710.0 + 25569.0) )
         t = 0;      // конверсия невозможна
    else
         t = static_cast<time_t>((d - 25569.0) * 86400.0); 

    return t;
}


Все .
Re[2]: Конверт. DATE в time_t и наоборот
От: filkov СССР  
Дата: 24.02.07 05:05
Оценка:
Здравствуйте, IgorK, Вы писали:
IK>
IK>time_t DATE2time_t(DATE d)

Зря я Вам поставил плюс, уважаемый
Врёт Ваша функция нещадно.
Вот что мне помогло:

// DATE theDate;
UDATE uDate;
HRESULT hr = VarUdateFromDate(theDate, 0, &uDate);

unsigned short Day   = uDate.st.wDay;
unsigned short Month = uDate.st.wMonth;
unsigned short Year  = uDate.st.wYear;
Санкционный Смотритель.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.