Isso sempre é um enigma para mim - e percebo que não é estritamente um problema de programação ou desenvolvimento de software, mas parece ser um problema comum em nosso campo.
Por exemplo, se eu definir uma data e hora de expiração como 08-04-2011 00:00:00 - e considerando que minha hora local atual é 10:45 no dia 8 - eu já expirei? Ou ainda tenho mais ou menos meio dia?
Existe um padrão universal a que fim do dia a 'meia-noite' pertence?
Ou devo pegar uma folha do exército britânico e dizer que o dia termina às 23:59:59 e começa às 00:00:01 e que não há meia-noite?
language-agnostic
time
HorusKol
fonte
fonte
24:00:00
é usado para descrever a meia-noite no final do dia.Respostas:
Eu acho que na programação (oracle e php, não tenho certeza sobre outras linguagens), meia-noite é o começo de um dia. Por exemplo, se você truncar (sysdate), receberá 2011-04-08 00:00:00 que é o nosso passado.
portanto, quando o relógio mudou de 23:59:59 para 00:00:00, a data realmente mudou de 08/04/2011 para 09/04/2011
fonte
Um adendo à resposta de @Phelios, se você tiver um horário como 00:00:00, não é necessariamente exatamente meia-noite. Pelo contrário, é um conjunto infinitamente grande de pontos no tempo, que todos têm uma distância máxima de <1 segundo entre si. Por exemplo, todos os 00: 00: 00.345, 00: 00: 00.567 e 00: 00: 00.842 claramente se encontram no lado do novo dia da meia-noite, mas seriam reduzidos para "00:00:00" para fins de exibição. Da mesma forma, 23: 59: 59: 899 fica do lado antigo da meia-noite. Assim, a meia-noite em si é um intervalo de tempo infinitamente curto entre os dias que você nunca alcançará na prática.
fonte
Esse é um problema semelhante ao cálculo de diferenças entre ângulos usando geometria circular, onde, por exemplo, 0 graus e 360 graus (e 720 graus, etc) são todos iguais. Então, qual é a diferença entre 350 e 10 graus?
Resposta: depende de como você deseja medi-lo - pode ser de 20 graus ou 340 graus. Mas fazer o cálculo para diferenças angulares é realmente bastante confuso. Os cálculos de diferença de horário são igualmente bagunçados, a menos que você converta para um formulário interno que faça a adição e subtração simples operar convencionalmente. Ou você usa uma biblioteca de classes moderna que esconde tudo de maneira mágica (e, portanto, nunca ensina ninguém sobre os detalhes reais).
fonte