Неправильный час в C ++ - PullRequest
5 голосов
/ 04 мая 2009
// Simple program to get the date and time on Windows
//  It compiles and works fine but displays the wrong hour!


// Using Visual C++ 2008 Express on XP SP2
#include <Windows.h>
#include <iostream>
using namespace std;


void main()
{
     SYSTEMTIME st;
     GetSystemTime(&st);

     cout << "Year : " << st.wYear << "\n";
     cout << "Month : " << st.wMonth << "\n";
     cout << "Day : " << st.wDay << "\n";

     // The following line displays the wrong hour, off by 4 hours. 
         // What gives?
     cout << "Hour : " << st.wHour << "\n";
     cout << "Minute : " << st.wMinute << "\n";
     cout << "Second : " << st.wSecond << "\n";
}

// TIA guys!
// -- Bert

Ответы [ 3 ]

17 голосов
/ 04 мая 2009

Время указано в UTC согласно документам. Ссылка ЗДЕСЬ

Для местного времени вы хотите GetLocalTime ()

3 голосов
/ 04 мая 2009

GetSystemTime() возвращает текущее время в UTC (см. Документацию ). Если вы находитесь в EST (то есть UTC-4, когда действует DST), то будет возвращено текущее время + 4 часа.

1 голос
/ 04 мая 2009

Вы проверили, находится ли ваше время в правильном часовом поясе?

Windows также имеет функцию getlocaltime , которая должна возвращать правильное время в вашем часовом поясе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...