如何验证两个日期是否相同?

How to validate if two dates are the same?

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

这是我实现的。我将数据库中入口模型的 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

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

您似乎有 date_created 作为 update_diary_entry() 中的字符串 (str)。这将导致与 Python datetime.date 对象的无效比较,除非您将字符串解析为相同类型:

>>> 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

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