首页 > 解决方案 > 如何验证两个日期是否相同?

问题描述

如何实现用户只能在日记条目的date_created和字段相同时更新条目的功能?date_modified

这就是我已经实现的。我已将 db 中条目模型的 date_created 字段与datetime.date.today().

数据模型

class DiaryEntry():

    def __init__(self):

        self.title = ''
        self.body = '' 
        self.date_modified = None
        self.date_created = datetime.date.today()



    def save(self, current_user_email):
        # insert data into db
        query = "INSERT INTO entries (owner_id, title, body, date_created, date_modified) \
                VALUES ((SELECT user_id from users where email ='{}'), '{}', '{}', '{}','{}')" \
                                                    . format(current_user_email,
                                                        self.title,
                                                        self.body,
                                                        self.date_created,
                                                        self.date_modified
                                                        )
        db.execute(query) 

方法

def update_diary_entry(self,entry_id):
        query = "select * from entries where entry_id='{}'".format(entry_id)
        result = db.execute(query)
        entry = result.fetchone()
        data = request.get_json()
        date_created = entry[4]


        if date_created == datetime.date.today():


           query = "update entries set title='{}',body='{}' where entry_id='{}'"\
                                .format(data['title'], data['body'], int(entry_id))
           db.execute(query)
           return {'message': 'diary entry updated succesfully','date':date_created}, 406


         else:
           return {'message': 'diary entry can only be updated on the day it was created'}, 406

我目前正在收到第二个退货声明。我可能做错了什么?

标签: pythonpython-datetime

解决方案


看起来您date_createdupdate_diary_entry(). datetime.date除非您将字符串解析为相同的类型,否则这将导致与 Python 对象的无效比较:

>>> import datetime
>>> date_created = '2018-07-29'

>>> date_created == datetime.date.today()
False

>>> datetime.datetime.strptime(date_created, '%Y-%m-%d').date() == datetime.date.today()
True

classmethodstrptime()将看起来像日期的字符串解析为datetime.datetime对象。然后,您需要从中获取日期组件以启用所需的比较。如果您有不同格式的日期字符串,请参阅strftime() 和 strptime() Behavior


推荐阅读