python - 如何验证两个日期是否相同?
问题描述
如何实现用户只能在日记条目的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
我目前正在收到第二个退货声明。我可能做错了什么?
解决方案
看起来您date_created
在update_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。
推荐阅读
- sql - Hive SQL 查询,如何根据地图中的整数值进行过滤?
- r - 读取具有 JSON 格式数据的 csv 文件的单个单元格,并使用 R 将其转换为数据框(列)
- weblogic - 更改 WebLogic 管理员门户 URL
- python - Discord.py 在命令方法上使用多个权限检查装饰器
- javascript - 如何从我的 JavaScript 应用程序调用 API
- java - 正确忽略 InterruptedException
- haxe - Haxe 4.1.5 保存数据?
- c++ - LoadLibrary Dll 注入器获取路径输入并“加扰”
- ruby-on-rails - 将空字符串转换为 int 的更短方法,然后进行钳位
- javascript - 网站按钮点击在移动设备上不起作用