使用这个课时我遇到了一个有趣的情况:
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_FORMATS
和TIME_INPUT_FORMATS
。
这样的事情:
c = Company(date=datetime.date.now(), time=datetime.time.now())
但是这显然会引发异常,因为现在不存在这样的异常。有没有不同的方法来实现这一目标?
答案 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 settings和Internationalization and localization,了解更多详细信息。