Como um programa do Windows pode alterar temporariamente seu fuso horário?
Eu escrevi uma função para retornar otime_t
valor correspondente à meia-noite em um determinado dia. Quando não há meia-noite para um determinado dia, ele retorna o horário mais cedo disponível; Essa situação pode ocorrer, por exemplo, quando o Egito entra no horário de verão. Este ano, a mudança de horário entra em vigor à meia-noite de 29 de abril, portanto o relógio vai diretamente das 23:59 às 01:00.
Agora estou escrevendo testes de unidade para esta função, e um dos testes deve replicar o cenário do Egito. No Unix, eu posso fazer isso assim:
putenv("TZ", "Egypt", true);
tzset();
Depois disso, mais chamadas paralocaltime
se comportam como se estivessem no Egito, e não em Minnesota, e meus testes foram aprovados. A simples definição da variável de ambiente não afeta o Windows. O que posso fazer para que o teste de unidade pense que está em outro lugar sem afetar o restante dos programas em execução no sistema?