86

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

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

Django 决定使用DATETIME_INPUT_FORMATSformats.py文件中定义。这是有道理的,因为我将 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

A related info, to the question...

In django, use timezone.now() for the datetime field, as django supports timezone, it just returns datetime based on the USE TZ settings, or simply timezone 'aware' datetime objects

For a reference, I've got TIME_ZONE = 'Asia/Kolkata' and 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

refer timezone settings and Internationalization and localization in django docs for more details.

于 2020-12-11T09:16:31.640 回答
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 回答