Djangoで現在の日付と現在の時刻をそれぞれ取得するにはどうすればよいですか?


81

このクラスを使用しているときに、興味深い状況に遭遇しました。

class Company(models.Model):
    date = models.DateField()
    time = models.TimeField()
c = Company(date=datetime.datetime.now(), time=datetime.datetime.now()) 

DjangoはDATETIME_INPUT_FORMATSformats.pyファイル内で定義されたものを使用することにしました。私はdatetime.now()両方のフィールドにを渡しているので、これは理にかなっています。

で現在の日付と現在の時刻のみを渡せば、DjangoにそれぞれDATE_INPUT_FORMATSとを使用させることができると思いますTIME_INPUT_FORMATS

このようなもの:

c = Company(date=datetime.date.now(), time=datetime.time.now()) 

しかし、現在はそのように存在しないため、これは明らかに例外をスローします。これを達成するための別の方法はありますか?

回答:


146

日付には、datetime.date.today()またはを使用できますdatetime.datetime.now().date()

とりあえず、を使用できますdatetime.datetime.now().time()


しかし、そもそもなぜこれらに別々のフィールドがあるのでしょうか。シングルを使ってみませんDateTimeFieldか?

.date()どちらか.time()一方だけが必要な場合は、またはそれ以降を返すヘルパー関数をモデルにいつでも定義できます。


それは琥珀色に感謝します。:)5分で受け入れることができます。私がこのようにそれを必要とする理由は、国際化とアメリカの時刻と日付のフォーマットを他の世界に翻訳するためです。:)
Houman 2012

5
タイムゾーンをサポートするには、DateTimeFieldを使用して常にUTC日時を保存し、クエリ時に現在のタイムゾーンに日付を転置する方がよいと思います。
Joucks 2012

@Kaveええ、pioukが言ったこと。UTCを格納しpytz、時刻を表示するときにのみ(のようなものを使用して)関連するタイムゾーンに変換するDateTimeFieldを使用します。これはストレージの優れた方法であるだけでなく、pytzすでに作成されているため、タイムゾーンの処理も無料で利用できます。
琥珀色

64
import datetime
datetime.datetime.now().strftime ("%Y%m%d")
20151015

とりあえず

from time import gmtime, strftime
showtime = strftime("%Y-%m-%d %H:%M:%S", gmtime())
print showtime
2015-10-15 07:49:18


5
 import datetime

現在の日時

     print(datetime.datetime.now())
     #2019-09-08 09:12:12.473393

現在の日付のみ

     print(datetime.date.today())
     #2019-09-08

今年度のみ

     print(datetime.date.today().year)
     #2019

今月のみ

     print(datetime.date.today().month)
     #9

当日のみ

     print(datetime.date.today().day)
     #8

0

ミリ秒単位で日時UTCを取得する別の方法。

from datetime import datetime

datetime.utcnow().isoformat(sep='T', timespec='milliseconds') + 'Z'

2020-10-29T14:46:37.655Z
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.