Мені так смішно засмучено необхідність використання значень DateTime для наборів даних, які справді є "лише за день". День народження - найпоширеніший приклад, але це постійно виникає у бізнес-програмах.
Я звик просто встановлювати часову частину записів "лише для дати" на полудень (що дозволяє уникнути зміни дати, незалежно від часового поясу). Це здається злому, і я назавжди знаходжу помилок у молодших розробників, які подорожують над цією проблемою.
Час завжди відносно фіксованої точки. 4:00 після меридіана або полудня. Найвища точка сонця в транзиті спостерігається і дозволяє нам встановити систему координат. За 3 години до полудня (Ante Meridian), 2 години після полудня, 1441899402938 мілісекунд з 1 січня 1970 року. Для людей, вирощених у декартовому світі, це друга природа.
Але наш календар передує Декарті. Мій аргумент полягає в тому, що це правильніше розглядати як перерахування, над яким застосовується функція модуля. Понеділок слідує за неділею і так далі, поки ви не доберетеся до того, що неділя слідує за суботою. Немає позитивного і негативного, це модуль або абсолютне значення.
Так само і з роками, що повторюються. Кожні 365 днів (або близько того) для мене є декілька особливих днів: дні народження, ювілеї, дитячі дні народження тощо. Програми бізнес-планування містять приклади зустрічей кожні сім днів, перший вівторок місяця тощо. Просто тому ми МОЖЕМЕ відобразити це на номер з плаваючою комою, а насправді відображення його на вказане число вирішує багато проблем, які по-старому дуже важкі, але це не означає, що це єдиний спосіб зробити це.
Поінформованість та розуміння природи «квадратного кілка в круглу дірку» використання DateTimes для зберігання дат робить вас кращим програмістом.
Чи є значення в додатку, явно призначеному як додаток для планування, для визначення класу дати, чи найкращий підхід "встановлений весь час до полудня"? Які проблеми можуть виникнути при використанні DateTime та встановленні компонента Time на полудень? Чи можна змінити часовий пояс таким чином? Я використовував MomentJS, але думаю, що це просто кращий клас дати.