C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как программно изменить системное время
Allin
Отправлено: 14.10.2006, 13:13


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Подскажите пожалуйста, как можнопрограммно изменить системные время и дату. В моём случае нужно изменять только время.
olegenty
Отправлено: 14.10.2006, 13:21


Ветеран

Группа: Модератор
Сообщений: 2412



BOOL SetSystemTime(

CONST SYSTEMTIME *lpSystemTime // address of system time to set
);
Arsa
Отправлено: 14.10.2006, 14:09


Дежурный стрелочник

Группа: Участник
Сообщений: 77



CODE
       _SYSTEMTIME date;
       GetSystemTime(&date);
       WORD hour = 0, minute = 37, second = 16, msecond = 13;
       date.wHour = hour;
       date.wMinute = minute;
       date.wSecond = second;
       date.wMilliseconds = msecond;
       SetSystemTime(&date);


Только с часами разберешься, а то ... сам, впрочем, увидишь!
Allin
Отправлено: 14.10.2006, 14:15


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Большое спасибо. Запутался только с этим гринвичем wizard.gif

Делаю так:
CODE

int hours=14;
int minuts=25;
int seconds=40;
GetSystemTime(&NewTime);
NewTime.wHour=hours;
NewTime.wMinute=minuts;
NewTime.wSecond=seconds;
SetSystemTime(&NewTime);


Часы устанавливаются равными 17. Это понятно, потому что у меня часовой пояс +2. Но как сделать чтобы время ставилось из переменной независимо от часового пояса. Один человек в Украине, другой во Владивостоке???
olegenty
Отправлено: 14.10.2006, 14:23


Ветеран

Группа: Модератор
Сообщений: 2412



BOOL SetTimeZoneInformation(

CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation // address of time-zone settings
);
Allin
Отправлено: 14.10.2006, 14:23


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Спасибо всем за участие в моем вопросе. Теперь разобрался.

Отредактировано Allin — 14.10.2006, 15:25
Allin
Отправлено: 14.10.2006, 16:13


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Так уже я и разобрался. Запутался напрочь. Происходит какое-то навождение уже на новую тему. Но может подскажите в этой. Пытался сделать что-то с помощью SetTimeZoneInformation(). Именно что-то. Теперь обнаружил, что не только это не получается.
Изначально код такой:
CODE

SYSTEMTIME NewTime;
int hours=14;
int minuts=25;
int seconds=40;
GetSystemTime(&NewTime);
NewTime.wHour=hours;
NewTime.wMinute=minuts;
NewTime.wSecond=seconds;
SetSystemTime(&NewTime);

При изменении системного времени меняется на 17:25:40
поменял код на
CODE

SYSTEMTIME NewTime;
int hours=14;
int minuts=45;
int seconds=40;
GetSystemTime(&NewTime);
NewTime.wHour=hours;
NewTime.wMinute=minuts;
NewTime.wSecond=seconds;
SetSystemTime(&NewTime);

При изменении системного времени всё равно меняется на 17:25:40
Со злости вообще всё выкинул. Оставил только
CODE

SYSTEMTIME NewTime;
SetSystemTime(&NewTime);

все равно время меняется на 17:25:40

Что это? У меня даже догадок нет.

victory.gif yu.gif ohmy.gif
Allin
Отправлено: 14.10.2006, 16:30


Дежурный стрелочник

Группа: Участник
Сообщений: 31



Всё, прошу прощения. Теперь точно всё получилось.

Вернуться в Вопросы программирования в C++Builder