如何比较两个不同的日期?

时间:2017-05-23 12:29:13

标签: python jinja2

我创建了一个时间戳,在我的数据库中10分钟后完成,在我的模板中我还创建了一个 jinja set变量 {% set now = moment().format('DD-MM-YYYY hh:mm:ss') %}

时间戳日期为: 23-05-2017 19:50:00

我目前的日期是: 23-5-2017 19:42:22

如果我想将时间戳与当前日期进行比较,即使当前日期小于时间戳,我也会得到真实。

以下是代码:

{% set now = moment().format('DD-MM-YYYY hh:mm:ss') %}
<h4>{{moment().format('DD-MM-YYYY HH:mm')}}</h4>
<h4>{{appo.timestamp.strftime('%d-%m-%Y %H:%M:%S')}}</h4>

{% if now < appo.timestamp.strftime('%d-%m-%Y %H:%M:%S') %}

  <h5>The appointment not finished yet.</h5>

{% elif now > appo.timestamp.strftime('%d-%m-%Y %H:%M:%S')  %}

  <h5>The appointment already finished.</h5>

{% endif %}

我总是约会结束。

请,任何建议!!!

2 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。

我刚制作了一个自定义模板过滤器,用于检查约会的状态是否已完成。

以下是代码:

@app_route.app_template_filter('getstatus')
def getstatus(id):
    appointment = Appointment.query.filter_by(id=int(id)).first_or_404()
    date = datetime.now()
    if date > appointment.end_time:
        return True
    elif date < appointment.end_time:
        return False
environment.filters['getstatus'] = getstatus

上面您可以看到我正在将对象与对象进行比较,因此如果当前日期 datetime.now 大于 appointment.end_time ,则返回 true 表示约会已完成,否则未完成。

答案 1 :(得分:1)

我发现datetime对象可以创建一个新的datetime对象:

mutate_at

现在您在jinja模板中有一个日期对象,您可以从现有对象创建一个新的日期时间对象并将其比较如下:

f1 <- function(x){
    class(x) <- 'comma'
    return(x)
}

df_central_database %>% 
 mutate_at(vars(contains('Summ')), funs(f1)) %>% 
 str()
相关问题