Estou tão ridiculamente frustrado por ter que usar valores DateTime para conjuntos de dados que são realmente "apenas um dia". Os aniversários são o exemplo mais comum, mas isso aparece nos aplicativos de negócios o tempo todo.
Eu me acostumei apenas a definir a parte da Hora dos registros "somente para data" como "meio-dia" (que evita que a data seja sempre alterada, independentemente do fuso horário). Parece um hack, e estou sempre encontrando bugs de desenvolvedores juniores que tropeçam nessa questão.
O tempo é sempre relativo a um ponto fixo. 16:00 é de 4 horas após o meridiano, ou meio-dia. O ponto mais alto do sol em trânsito é observável e permite a criação de um sistema de coordenadas. 3 horas antes do meio dia (Ante Meridian), 2 horas depois do meio dia, 1441899402938 milissegundos desde 1º de janeiro de 1970. Para as pessoas criadas em um mundo cartesiano, isso é uma segunda natureza.
Mas nosso calendário é anterior a Descartes. Meu argumento é que é mais adequadamente pensado como uma enumeração sobre a qual uma função de módulo é aplicada. Segunda-feira segue domingo, e assim por diante até chegar ao fato de que domingo segue sábado. Não há positivo e negativo, é um módulo ou valor absoluto.
Da mesma forma com anos repetindo. A cada 365 dias (mais ou menos), existem vários dias especiais para mim: aniversários, aniversários, aniversários de crianças, etc. etc. nós PODEMOS mapear isso em um número de ponto flutuante e, na verdade, mapear esse número resolve muitos problemas que são realmente difíceis da maneira antiga, mas isso não significa que é a única maneira de fazê-lo.
A conscientização e o entendimento da natureza do "uso de DateTimes para armazenar datas" tornam o programador melhor na minha opinião.
Existe valor em um aplicativo explicitamente destinado a ser um aplicativo de agendamento na definição de uma classe Date ou é "definir todos os horários ao meio-dia" a melhor abordagem? Quais problemas podem ocorrer com o uso do DateTime e com a configuração do componente Hora como Meio-dia? A mudança de fuso horário pode ser considerada nessa abordagem? Eu usei o MomentJS, mas acho que essa é apenas uma classe Date melhor.