Как программа Windows может временно изменить свой часовой пояс?

Я написал функцию для возвратаtime_t значение, соответствующее полуночи в данный день. Если для данного дня нет полуночи, он возвращает самое раннее доступное время; такая ситуация может возникнуть, например, когда в Египте наступает переход на летнее время. В этом году изменение времени вступает в силу в полночь ночи 29 апреля, поэтому часы идут с 23:59 до 01:00.

Сейчас я пишу модульные тесты для этой функции, и один из тестов должен повторить сценарий Египта. В Unix я могу сделать это так:

putenv("TZ", "Egypt", true);
tzset();

После этого, дальнейшие звонкиlocaltime ведите себя так, как будто они в Египте, а не в Миннесоте, и мои тесты проходят. Однако простая установка переменной среды не оказывает никакого влияния на Windows. Что я могу сделать, чтобы заставить модульный тест думать, что он где-то еще, не затрагивая остальные программы, работающие в системе?

Ответы на вопрос(8)

Ваш ответ на вопрос