У меня проблема с использованием функции std :: localtime. Когда я преобразовываю std :: time_t в локальную структуру tm, он всегда использует американское летнее время, тогда как я хочу использовать европейский (Франция).C++ std :: localtime летнее время (dst) european vs american
UTC: 03/19/16 16:56 преобразован Местность: 03/19/16 18:56.
В этот день, как правило, местный - 17:56 (UTC + 1). DST происходит на 27-м во Франции. После нескольких тестов кажется, что используемый DST основан на американском правиле: DST происходит во второе воскресенье в марше.
Я также изменил переменную environement TZ, но она также терпит неудачу.
`
if(putenv("TZ=CET-1CEST-2,M3.5.0/2,M10.5.0/3") != 0) {
std::cout << "Unable to set TZ" << std::endl;
} else {
tz = getenv("TZ");
if (tz) std::cout << tz << std::endl;
else std::cout << "TZ not defined" << std::endl; tzset();
}
struct std::tm t;
t.tm_sec = 0;
t.tm_min = 56;
t.tm_hour = 18;
t.tm_mday = 19;
t.tm_mon = 3-1;
t.tm_year = 2016-1900;
t.tm_isdst = -1;
std::time_t tt = std::mktime(&t);
std::cout << "UTC: " << std::put_time(std::gmtime(&tt), "%c %Z") << '\n'; // UTC : 03/19/16 16:56
std::cout << "local: " << std::put_time(std::localtime(&tt), "%c %Z") << '\n'; // Local : 03/19/16 18:56 (not waited result)
`
В точности, я использую bcc32c компилятор (Причал C++ лязг компьютер на базе).
Надеюсь, я достаточно ясен, и вы сможете мне помочь.
Заранее спасибо
Это, вероятно, окружающая среда вещь тоже, что ваша операционная система? – Neil
Есть ли у вашей среды ''? –
Я использую ОС Win 7 32 бит.Я использовал –