仅分别获取当前日期和当前时间

Hou*_*man 79 python django django-models

我遇到了一个有趣的情况.

class Company(models.Model):
    date = models.DateField()
    time = models.TimeField()
Run Code Online (Sandbox Code Playgroud)

使用此课程时:

c = Company(date=datetime.datetime.now(), time=datetime.datetime.now()) 
Run Code Online (Sandbox Code Playgroud)

Django决定DATETIME_INPUT_FORMATS在formats.py文件中使用defined.这是有道理的,因为我将datetime.now()传递给两个字段.

我想我能让Django的使用datetime.now()DATE_INPUT_FORMATS分别,如果我只在当前日期和当前时间过去了.

像这样的东西:

c = Company(date=datetime.date.now(), time=datetime.time.now()) 
Run Code Online (Sandbox Code Playgroud)

但这引发了一个异常,因为现在不存在这样的异常.有没有不同的方法来实现这一目标?

非常感谢,

Amb*_*ber 138

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

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


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

您可以随时对返回的模型中定义的辅助功能.date().time()更高版本,如果你只需要一个或另一个.

  • 对于时区支持,我认为最好使用DateTimeField始终存储UTC日期时间,然后在查询时将日期转置到当前时区. (5认同)

Abd*_*zak 62

import datetime
datetime.datetime.now().strftime ("%Y%m%d")
20151015
Run Code Online (Sandbox Code Playgroud)

当时

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


小智 21

import datetime

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

datetime.datetime.now() # Returns 2018-01-15 09:00
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止最好的答案! (2认同)

Aks*_*ran 12

相关信息,针对问题...

在 django 中,用于timezone.now()datetime 字段,因为 django 支持timezone,它只是根据USE TZ设置返回 datetime ,或者简单地返回时区“感知”日期时间对象

作为参考,我有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
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅django 文档中的时区设置以及国际化和本地化。


Muh*_*eed 6

 import datetime
Run Code Online (Sandbox Code Playgroud)

当前日期和时间

     print(datetime.datetime.now())
     #2019-09-08 09:12:12.473393
Run Code Online (Sandbox Code Playgroud)

仅当前日期

     print(datetime.date.today())
     #2019-09-08
Run Code Online (Sandbox Code Playgroud)

仅限当年

     print(datetime.date.today().year)
     #2019
Run Code Online (Sandbox Code Playgroud)

仅当月

     print(datetime.date.today().month)
     #9
Run Code Online (Sandbox Code Playgroud)

仅限当天

     print(datetime.date.today().day)
     #8
Run Code Online (Sandbox Code Playgroud)