Simon Langdon Ответов: 1

Win32-localtime функция находится в часе езды на одной из моих машин?


Возможно, это больше вопрос ОС.. но вот идет.

Я создаю резервные копии на основе текущего времени, используя localtime для преобразования в пользовательскую дату / время

time_t          rawtime;
     struct tm      *timeinfo;
     char            timestring [TIME_STRING_LENGTH+1];

     time (&rawtime);
     timeinfo = localtime (&rawtime);

     strftime (timestring,TIME_STRING_LENGTH,"%Y_%m_%d_%H_%M_%S",timeinfo);




MSDN -
Convert a time value and correct for the local time zone


Я развернул это в нескольких наших тестовых боксах - только один ошибается - я нахожусь в Великобритании, сегодня BST (GMT+1). Одна машина (Win7_64), по - видимому, выводит GMT-на один час позже того, что указано на часах в системном трее. Настройки часов, по-видимому, согласованы на всех моих машинах.

Есть ли еще один API, который я должен использовать?

Спасибо

Что я уже пробовал:

gmtime, msdn, google ......................

Richard MacCutchan

Просто попробовал свой код здесь (Woking) на Win 10 64 bit, и все значения верны. Есть ли что-то странное в этой системе?

Simon Langdon

ура - все здесь, кого я попросил запустить его, говорят, что он отлично работает, Win10, Win8, Win7, Server 2012. Тогда только одна машина }-(

1 Ответов

Рейтинг:
10

Simon Langdon

Я нашел другую функцию, которая, кажется, делает то, что я ожидаю :-)

SYSTEMTIME st;

GetLocalTime(&st);

CString time2;

time2.Format(TEXT ("%d_%d_%d_%d_%d_%d"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);


Richard MacCutchan

Это все еще очень странно.

Richard MacCutchan

Просто проверьте еще раз, и оба метода дают одно и то же (правильное) время.

Simon Langdon

Да, я обнаружил на сайте еще одну машину, которая тоже производила неправильное время - это была Win8 / 64. Это не кажется специфичным для ОС. Кто-то предложил часы bios, но это соответствовало Windows и другим машинам.