【问题标题】:Getting time from django.utils.timezone从 django.utils.timezone 获取时间
【发布时间】:2018-07-04 14:52:58
【问题描述】:

我正在编写一个 Django 应用程序,其中我有一个带有 event_time 字段和 event_date 字段的事件模型。我想检查一个事件是否已经开始并正在进行中。

如果活动安排的日期等于今天的日期,而活动安排的时间小于等于现在的时间,则表示活动已经开始;否则事件尚未开始。

这是我的代码:

context['is_ongoing'] = context['event'][0].event_date == datetime.now().date() and timezone.now().time() >= context['event'][0].event_time

即使event_time 大于现在的时间,我也会得到True,而在这种情况下我想要False

【问题讨论】:

  • 事件来自 django 模型?
  • 不需要 datetime.now().date() 和 timezone.now().time() 只需使用 datetime.now() 它已经带有时间戳
  • 是的,它来自一个 django 模型,它是一个从数据库中检索的事件

标签: django timezone


【解决方案1】:

从查询集中通过数组获取位置,甚至不检查它是否有值是一种难闻的气味,建议不要这样做,如果你想要第一个元素,请尝试使用函数 .first()

import datetime

event = context['event'].first()
if event:
    context['is_ongoing'] True if event.event_date >= datetime.datetime.now().date() and event.event_time >= datetime.datetime.now() else False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2011-10-21
    相关资源
    最近更新 更多