2011-08-03 5 views
2

日時はすべて日付で指定できますか?私はすべてのドキュメントを読んだわけではありませんが、これまでのところ私は常にdatetimeを使っています。 Djangoでさえ、datetime型のフィールドは(少なくとも私にとっては)もっと便利です。あなたがしたくない場合は、時間を使用する必要はありませんが、あなたがそうすることを決定した場合、することができます。なぜPythonで日付クラスがあるのですか?

JavaScriptは1つの日付クラスで正常に管理されているようです。

datetimeより日付が優先される例を教えてください。

+1

日付はすべて重要です。 – agf

+0

日付はdatetimeより少し小さいスペースをとります。大きなシステムでは大きな違いがあります。 – nagisa

+0

日付は、86400秒または86401秒の期間の日付時間の範囲です。時間は日常的な繰り返しです。 –

答えて

4

日付コンポーネントのみが必要な場合は、時間なしで行うことができます。

datetimedatetime種類の組成物であるので、はいdatetimedateが何をすべて行います(ともtimeが何をするのか、すべてを行います)。

もう一方の代わりに1つを選択するのは非常に簡単です。日付のみを記録する場合は、dateを使用してください。特定のイベントの時刻をより詳細に特定して追跡する必要がある場合は、date timeオブジェクトを使用してください。イベントが特定の時間にのみバインドされ、日付が関連しない場合には、timeオブジェクトにも同じことが適用されます。

+0

'time'は、UTCを使用することが不可能になります。これは必須と考えられます。 –

-1

datetimeは、タイプdateおよびtimeと同じです。唯一良いことは、dateよりもスペースが少なくて済むことです。

+0

意味的に、日付は日時と大きく異なります。場合によっては、必要なのは日付だけです。 –

4

特定の概念は、日付時刻ではなく日付として理解しやすい場合があります。たとえば、誕生日、支払日、支払期日はすべて潜在的に日付時刻になる可能性がありますが、単純な日付として表示する方がはるかに優れています。これらをdatetimesとして表現すると、混乱やあいまいさが発生する可能性があります。

まず、コードの将来のメンテナーは、あなたがすでにdateを使用していると思うかもしれません。明らかに同一の2つの誕生日が「等しくない」可能性があるため、比較演算がどのように動作するかによって驚くことがあります。

また、誕生日がdatetimeであることがわかっていても、すぐにはわかりません。時間が常にUTCでの出生の正確な時刻であることは合理的かもしれません。ただし、ユーザーから取得したデータが不完全であり、UTCの午前0時をデフォルトとする場合は、考慮する必要があります。そして、あなたがそれを行うと、真夜中のUTC時間の誕生日が自動入力されたのか、それとも実際にユーザーが提供したデータなのかどうかはもう分かりません。

それ以外の場合、各datetimeにプレースホルダ深夜UTC時間を割り当てるだけで、各誕生日の関連する時間フィールドの意味は、コードベースを初めて使用している人にとってはすぐには分かりません。この規則を認識していない人は、これらのうちの1つの時間フィールドを変更する可能性があります。そのため、機能が非常に見えなくなる可能性があります。もしそれがちょうど日付だったら、その問題は回避されていたでしょう。

tl、dr:dateが存在するため、開発者は「仕事に適したツール」を使いやすくすることができます。

+0

+1この投稿は、別々のTimeオブジェクトと同様に、別々のDateオブジェクトとDatetimeオブジェクトを持つ理由をまとめたものです。 Timeオブジェクトでは、毎日繰り返すタスクを検討してください。これはDateオブジェクトではなく、Timeオブジェクトです。同様に、記念日や誕生日を考えてみましょう。それらはすべて終日イベントで、DateTimeではなくDateとして最もよく表現されます。あなたが表現/エミュレートしている実際のオブジェクトにあなたのコードをより密接にマッピングすることができます。より清潔で清潔に保ちやすくなります。 – Jonathanb

関連する問題