C ++ конвертировать из упакованной даты в CTime - PullRequest
2 голосов
/ 06 июля 2011

Я посмотрел, но не могу найти API для преобразования из DATE в CTime и наоборот. Что-то подобное существует?

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

CTime включает в себя ряд конструкторов и преобразователей для различных форматов времени;кажется странным, что DATE не входит.Однако _time64_t поддерживается и отличается от DATE только начальной датой и масштабом.Вы можете легко конвертировать из одного в другое, если у вас есть начальная дата 1 января 1970 года в виде значения DATE:

DATE       jan1_1970 = ????;
__time64_t t;
DATE       d;
double     seconds_per_day = 24.*60.*60.;
t = (d - jan1_1970) * seconds_per_day;
d = (t / seconds_per_day) + jan1_1970;
0 голосов
/ 06 июля 2011

Вероятно, существует более короткий метод, но, следуя документам, вы можете сохранить DATE в COleDateTime, получить его как SYSTEMTIME, а затем использовать его для создания вашего CTime. Предполагая, что он представлен в виде CTime.

SYSTEMTIME st;
DATE d(whatever);
COleDateTime ole(d);
d.GetAsSystemTime(st);
CTime ct(st);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...