CTime странное поведение

  • Автор темы klizardin
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

klizardin

#1
См код.

CTime time1 = CTime::GetCurrentTime();
CTime time2 = CTime(time1.GetYear(),time1.GetMonth(),time1.GetDay(),0,0,0);
// далее начинается фантастика.
double t1 = time1.GetTime() /(24.*60*60);
double t2 = time2.GetTime()/(24.*60*60);
// почемуто если t1 получаем как 12570.443...
// а t2 == 12569.999
// т.е. !!!!! получаем что в сутках не 24 часа -- большая Ж(

Обьясните как такое может быть, может во всем виноваты локальные настройки хотя странно это.
 
K

klizardin

#2
Оказывается что CTime возращает тип time_t который определен как количество секунд от некоторой даты (Jan 01 1970) в единицах UTC (coordinated universal time) т.е. по гринвичу. В чем и оказалась проблема. Спасла _timezone (time.h)переменная которая предоставляет информацию о текущем часовом поясе. (информацию _timezone можно найти в описании функции _tzset() в MSDN).

И еще маленький баг с конструктором CTime() последний параметр который имеет значение и определяет то как будет интерпретироваться время.
 
G

Guest

#3
Не пойму как работать срестром в Microsoft Visual Basic
 
G

Guest

#4
Не пойму как работать срестром в Microsoft Visual Basic ?
 
Статус
Закрыто для дальнейших ответов.