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中的时间格式问题[重复]的主要内容,如果未能解决你的问题,请参考以下文章

DateTimeField 的格式 [重复]

Django 模板中的日期/时间格式

模板中的 Django 文本格式

python中的日期时间格式转换[重复]

在 django 模板中格式化时间戳

日期列中的剑道网格格式时间问题[重复]