Django에서 각각 현재 날짜와 현재 시간을 얻는 방법은 무엇입니까?


81

이 수업을 사용할 때 흥미로운 상황을 발견했습니다.

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

Django는 types.py 파일에 DATETIME_INPUT_FORMATS정의 된 것을 사용하기로 결정 합니다. 두 필드 모두에 전달하기 때문에 의미가 있습니다.datetime.now()

내가 장고 사용할 수 있도록 수 있다고 생각 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

5
시간대 지원을 위해 DateTimeField를 사용하여 항상 UTC 날짜 시간을 저장 한 다음 쿼리 시간에 날짜를 현재 시간대로 바꾸는 것이 더 낫다고 생각합니다.
Joucks

@Kave 그래, piouk가 말한 것. UTC를 저장하는 DateTimeField를 사용하고 시간 pytz을 표시 할 때 관련 시간 대로만 변환합니다 (예 :) . 이것은 더 나은 저장 방법 일뿐만 아니라 pytz이미 작성 되었기 때문에 시간대 처리도 무료로받을 수 있습니다.
Amber

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

밀리 초로 datetime 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.