Jestem tak śmiesznie sfrustrowany, że muszę używać wartości DateTime dla zestawów danych, które są naprawdę „tylko jeden dzień”. Urodziny są najczęstszym przykładem, ale cały czas pojawia się w aplikacjach biznesowych.
Przyzwyczaiłem się do ustawiania części Time rekordów „tylko data” na „południe” (co pozwala uniknąć zmiany daty bez względu na strefę czasową). To wygląda na włamanie i zawsze znajduję błędy od młodszych deweloperów, które potknęły się o ten problem.
Czas zawsze zależy od stałego punktu. 16.00 to 4 godziny po południku lub w południe. Obserwowany jest najwyższy punkt tranzytowy Słońca i pozwala nam ustawić układ współrzędnych. 3 godziny przed południem (Ante Meridian), 2 godziny po południu, 1441899402938 milisekund od 1 stycznia 1970 r. Dla ludzi wychowanych w kartezjańskim świecie jest to druga natura.
Ale nasz kalendarz poprzedza Kartezjusza. Moim argumentem jest to, że bardziej poprawnie jest traktowany jako wyliczenie, w którym stosowana jest funkcja modulo. Poniedziałek następuje po niedzieli i tak dalej, aż dojdziesz do faktu, że niedziela następuje po sobocie. Nie ma dodatniego i ujemnego, jest to moduł lub wartość bezwzględna.
Podobnie z powtarzającymi się latami. Co 365 dni (lub tak) jest dla mnie kilka specjalnych dni: urodziny, rocznice, urodziny dla dzieci itp. Itp. Aplikacje do planowania spotkań biznesowych są pełne przykładów spotkań co siedem dni, pierwszy wtorek miesiąca itp. Tylko dlatego, że MOŻEMY odwzorować to na liczbę zmiennoprzecinkową, a tak naprawdę odwzorowanie na wspomnianą liczbę rozwiązuje wiele problemów, które są naprawdę trudne w stary sposób, ale to nie znaczy, że jest to jedyny sposób, aby to zrobić.
Świadomość i zrozumienie natury „kwadratowego kołka w okrągłej dziurze” polegającej na używaniu DateTimes do przechowywania Daty sprawia, że moim zdaniem jesteś lepszym programistą.
Czy w aplikacji definiującej klasę Date jest wartość, która jest wyraźnie przeznaczona jako aplikacja do planowania, czy też najlepszym rozwiązaniem jest „ustawienie na cały czas do południa”? Jakie mogą być problemy z użyciem DateTime i ustawieniem składnika Time na Noon? Czy w takim podejściu można uwzględnić przesunięcie strefy czasowej? Użyłem MomentJS, ale myślę, że to po prostu lepsza klasa Date.