相关文章推荐
逃跑的甘蔗  ·  sql server ...·  1 年前    · 

Django决定使用 DATETIME_INPUT_FORMATS 中定义的 formats.py 文件。 这是有道理的,因为我在两个字段中都传入了一个 datetime.now()

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

Something like this:

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

但这显然会抛出一个异常,因为现在并不存在这样的情况。 有什么不同的方法来实现这个目标吗?

python
django
django-models
Houman
Houman
发布于 2012-08-20
6 个回答
Amber
Amber
发布于 2020-10-29
已采纳
0 人赞同

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

对于时间,你可以使用datetime.datetime.now().time()

然而,为什么首先要为这些东西设置单独的字段?为什么不使用单一的DateTimeField

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

它的工作原理是:琥珀,非常感谢。:)可以在5分钟内接受。 我需要这种方式的原因是国际化和让美国的时间和日期格式翻译到世界其他地方。)
对于时区支持,我认为最好还是使用DateTimeField来存储UTC日期时间,然后在查询时将日期转为当前时区。
@Kave 是的,正如piouk所说。使用一个存储UTC的DateTimeField,并且只翻译成相关的时区(使用类似的方法pytz) 当你去显示时间的时候。这不仅是一种更好的存储方式,而且你还可以免费获得时区处理,因为pytz已经为你写好了。
Abdul Razak
Abdul Razak
发布于 2020-10-29
0 人赞同
import datetime
datetime.datetime.now().strftime ("%Y%m%d")
20151015

For the time

from time import gmtime, strftime
showtime = strftime("%Y-%m-%d %H:%M:%S", gmtime())
print showtime
2015-10-15 07:49:18
    
Ethan Brimhall
Ethan Brimhall
发布于 2020-10-29
0 人赞同
import datetime
datetime.date.today()  # Returns 2018-01-15
datetime.datetime.now() # Returns 2018-01-15 09:00
    
到目前为止最好的答案!
Muhammad Faizan Fareed
Muhammad Faizan Fareed
发布于 2020-10-29
0 人赞同
 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

Current month only

     print(datetime.date.today().month)
     print(datetime.date.today().day)
    
Akshay Chandran
Akshay Chandran
发布于 2020-10-29
0 人赞同

一个相关的信息,对这个问题...

在django中,使用timezone.now()作为日期时间字段,因为django支持时区, it just returns datetime based on the USE TZ settings, or simply 时区 'aware' datetime objects

作为参考,我有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

refer 时区 settingsInternationalization和localization更多细节请参见django文档。

Bruno Wego
Bruno Wego
发布于 2020-10-29
0 人赞同

另一种方法是用毫秒来获取日期时间UTC。

from datetime import datetime