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


81

使用此类时,我遇到了一个有趣的情况:

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

Django决定使用format.py文件中DATETIME_INPUT_FORMATS定义的内容。这是有道理的,因为我将a传递给两个字段。datetime.now()

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

像这样:

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

但这显然引发了异常,因为现在不存在这种异常。有没有其他方法可以实现这一目标?

Answers:


146

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

目前,您可以使用datetime.datetime.now().time()


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

如果您只希望一个或另一个,则可以始终在模型上定义返回.date().time()以后的助手函数。


它适用于Amber,非常感谢。:)可以在5分钟内接受。我之所以需要这种方式,是因为国际化并将美国时间和日期格式转换为世界其他地区。:)
Houman

5
对于时区支持,我认为最好使用DateTimeField始终存储UTC日期时间,然后在查询时将日期转置为当前时区。
2012年

@Kave是的,piouk说了什么。使用存储UTC的DateTimeField并仅pytz在转到显示时间时才转换为相关的时区(使用类似)。这不仅是更好的存储方式,而且因为pytz已经为您编写了代码,所以您还可以免费获得时区处理。
2012年

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.