Почему в Python есть класс даты - PullRequest
2 голосов
/ 03 августа 2011

Разве datetime не охватывает все, что может сделать эта дата?Я не прочитал всю документацию, но до сих пор я всегда использую datetime.Даже в Django - поля модели datetime всегда более полезны (по крайней мере, для меня).Вам не нужно использовать часы, если вы не хотите, но если вы решите, что вы делаете, вы можете.

Javascript, кажется, справляется нормально только с одним классом дат.

Можете ли вы привести пример, в котором дата предпочтительнее даты и времени?

Ответы [ 3 ]

4 голосов
/ 03 августа 2011

Некоторые понятия могут быть легче понятны как даты, а не как даты.Например, дни рождения, дни выплаты и сроки исполнения потенциально могут быть датами, но они могут быть гораздо лучше выражены в виде простых дат.Выражение их как datetime может привести к путанице / двусмысленности в будущем.

Прежде всего, будущие сопровождающие вашего кода могут подумать, что вы уже используете date s.Тогда они могут быть удивлены тем, как ведут себя операции сравнения, поскольку два явно идентичных дня рождения могут быть не равны.

Кроме того, даже если они знают, что день рождения представлен как datetime, не сразу очевидно, какое будет время.Может быть разумно, чтобы время всегда было точным временем рождения в UTC.Но тогда могут потребоваться соображения, когда данные, которые вы получаете от своих пользователей, являются неполными, и вы по умолчанию устанавливаете время в полночь по UTC.И затем, если вы сделаете это, вы больше не будете знать, был ли день рождения с полуночным временем UTC заполнен автоматически, или это были фактически предоставленные пользователем данные.

И в противном случае, если вы просто назначаете заполнитель полуночи UTCвремя для каждого datetime, значение связанного поля времени каждого дня рождения может все еще быть не сразу понятно кому-то новичку в кодовой базе.Кто-то, кто не знает об этом соглашении, может изменить поле времени одного из этих datetime s, и это может привести к очень незаметному нарушению функциональности.Если бы это была просто дата, эта проблема была бы предотвращена.

tl, dr: date существует, чтобы упростить разработчикам использование «правильного инструмента для работы».

4 голосов
/ 03 августа 2011

Когда вам нужен только компонент даты и можно обойтись без времени.

datetime является составом типов date и time, поэтому да , datetime делает все то, что делает date (и также делает все то, что делает time).

Таким образом, выбрать одно вместо другого довольно просто: если вы хотите записать только дату, используйте date; если вам нужно быть более конкретным и отслеживать также время определенного события, используйте объект date time. То же самое относится к объекту time, если событие должно быть привязано только к определенному времени, а дата не имеет значения.

0 голосов
/ 03 августа 2011

datetime аналогичен типам date и time.Лучше всего то, что он занимает меньше места, чем date.

...