Некоторые понятия могут быть легче понятны как даты, а не как даты.Например, дни рождения, дни выплаты и сроки исполнения потенциально могут быть датами, но они могут быть гораздо лучше выражены в виде простых дат.Выражение их как datetime может привести к путанице / двусмысленности в будущем.
Прежде всего, будущие сопровождающие вашего кода могут подумать, что вы уже используете date
s.Тогда они могут быть удивлены тем, как ведут себя операции сравнения, поскольку два явно идентичных дня рождения могут быть не равны.
Кроме того, даже если они знают, что день рождения представлен как datetime
, не сразу очевидно, какое будет время.Может быть разумно, чтобы время всегда было точным временем рождения в UTC.Но тогда могут потребоваться соображения, когда данные, которые вы получаете от своих пользователей, являются неполными, и вы по умолчанию устанавливаете время в полночь по UTC.И затем, если вы сделаете это, вы больше не будете знать, был ли день рождения с полуночным временем UTC заполнен автоматически, или это были фактически предоставленные пользователем данные.
И в противном случае, если вы просто назначаете заполнитель полуночи UTCвремя для каждого datetime
, значение связанного поля времени каждого дня рождения может все еще быть не сразу понятно кому-то новичку в кодовой базе.Кто-то, кто не знает об этом соглашении, может изменить поле времени одного из этих datetime
s, и это может привести к очень незаметному нарушению функциональности.Если бы это была просто дата, эта проблема была бы предотвращена.
tl, dr: date
существует, чтобы упростить разработчикам использование «правильного инструмента для работы».