86

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

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

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

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

このようなもの:

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

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

4

6 に答える 6

154

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

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


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

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

于 2012-08-19T21:40:18.983 に答える
67
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
于 2015-10-15T07:51:32.017 に答える
30
import datetime

datetime.date.today()  # Returns 2018-01-15

datetime.datetime.now() # Returns 2018-01-15 09:00
于 2018-01-15T14:00:44.107 に答える
7
 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
于 2019-09-08T04:19:56.730 に答える
1

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

from datetime import datetime

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

2020-10-29T14:46:37.655Z
于 2020-10-29T14:49:05.543 に答える
1

質問に関連する情報...

djangoではtimezone.now()、datetimeフィールドに使用します。djangoはタイムゾーンをサポートしているため、設定に基づいて日時を返すUSE TZか、単にタイムゾーンを「認識」した日時オブジェクトを返します。

参考までに、私は持っていTIME_ZONE = 'Asia/Kolkata'ますUSE_TZ = True、、

from django.utils import timezone
import datetime

print(timezone.now())  # The UTC time
print(timezone.localtime())  # timezone specified time, 
print(datetime.datetime.now())  # default local time

# output
2020-12-11 09:13:32.430605+00:00
2020-12-11 14:43:32.430605+05:30  # IST is UTC+5:30
2020-12-11 14:43:32.510659

詳細については、djangoドキュメントのタイムゾーン設定国際化およびローカリゼーションを参照してください。

于 2020-12-11T09:16:31.640 に答える