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?
24:00:00
é usado para descrever a meia-noite no final do dia.