如何在Django中分别获取当前日期和当前时间?

时间:2012-08-19 21:33:52

标签: python django django-models

使用这个课时我遇到了一个有趣的情况:

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。 这是有道理的,因为我将datetime.now()传递给两个字段。

如果我只传入当前日期和当前时间,我想我可以让Django分别使用DATE_INPUT_FORMATSTIME_INPUT_FORMATS

这样的事情:

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

但是这显然会引发异常,因为现在不存在这样的异常。有没有不同的方法来实现这一目标?

6 个答案:

答案 0 :(得分:133)

对于该日期,您可以使用datetime.date.today()datetime.datetime.now().date()

当时,您可以使用datetime.datetime.now().time()


但是,为什么首先要为这些字段添加单独的字段?为什么不使用单个DateTimeField

如果您只想要一个或另一个,您可以随时在模型上定义辅助函数,以返回.date().time()

答案 1 :(得分:58)

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

答案 2 :(得分:17)

import datetime

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

datetime.datetime.now() # Returns 2018-01-15 09:00

答案 3 :(得分:2)

 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

答案 4 :(得分:1)

另一种以毫秒为单位获取日期时间UTC的方法。

from datetime import datetime

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

2020-10-29T14:46:37.655Z

答案 5 :(得分:0)

与该问题有关的信息...

在django中,由于django支持timezone,所以在日期时间字段中使用timezone.now(),它只是基于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文档中的timezone settingsInternationalization and localization,了解更多详细信息。