django中的时间格式问题[重复]
Posted
技术标签:
【中文标题】django中的时间格式问题[重复]【英文标题】:Issues with time formats in django [duplicate] 【发布时间】:2016-04-11 10:31:57 【问题描述】:我在 django 中遇到了一些时间格式问题。
我的模型 DateTimeField 正在使用 auto_now 来存储日期时间,我正在尝试使用此日期时间字段过滤数据。
我用来比较的输入日期时间是不同的格式,如2016-1-5T5:00:00
,而存储在 djnago 模型中的日期时间是默认的 django 格式,因为我使用的是auto_now
。
我得到的错误如下:
RuntimeWarning: DateTimeField MyModel.modified_at received a naive datetime (2016-01-05 05:00:00) while time zone support is active.
RuntimeWarning)
所以我想我需要将输入时间转换为适合 django 的格式。 知道如何比较这两个日期,以便我的查询可以过滤正确的数据。
【问题讨论】:
@AmalTs 我已经尝试了那部分,但是当我这样做时datetime.datetime(my_time_inut)
我会收到错误提示 str 不允许
但是你使用的是来自django.utils import timezone
的吗?
@AmalTs 是来自 utils
@user5594493: datetime(my_time_input)
是一个不同的问题。您可以提出一个单独的问题,例如“如何在给定my_time_input
的情况下获取时区感知日期时间对象”。确保描述 my_time_input
是什么(它是一个字符串吗?它是一个 API 调用的返回值吗?等等)。
@J.F.Sebastian 是的,我正在从 API 调用中获取输入,并且它的格式有问题 -> 2016-1-5T5:00:00
【参考方案1】:
您是否尝试过使用时区感知日期时间?例如
datetime.datetime(2013, 11, 20, 20, 8, 7, 127325, tzinfo=<UTC>)
你可以这样:
import pytz
timezone_aware_time = pytz.timezone('UTC').localize(datetime.datetime(2013, 11, 20, 20, 8, 7, 127325))
要将您的字符串转换为兼容格式并为其指定时区,请执行以下操作:
import datetime from datetime
datetime.strptime('2016-1-5T5:00:00', '%Y-%m-%dT%H:%M:%S')
总之:
import pytz
import datetime from datetime
timezone_aware_time = pytz.timezone('UTC').localize(datetime.strptime('2016-1-5T5:00:00', '%Y-%m-%dT%H:%M:%S'))
作为参考,auto_now 使用时区 UTC。
【讨论】:
我已经尝试过这部分,但是当我这样做时 datetime.datetime(my_time_inut) 我会收到错误提示 str 不允许 -> 需要整数(类型 str) 你能发布 my_time_inut 是什么吗?另外,您的意思是 inut 还是 input? 输入,格式为2016-1-5T5:00:00
。我从智能手机得到这个输入
这样做:import pytz pytz.timezone('UTC').localize(datetime.datetime(2016, 1, 5, 5, 0, 0))
但问题是如何转换 2016-1-5T5:00:00 -> 2016, 1, 5, 5, 0, 0 ?以上是关于django中的时间格式问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章