简体   繁体   English

(python flask) [已解决] 获取日期形式 URL 然后加减天数,有错误响应 function (ex ":sorry, wrong input Dear customer~")

[英](python flask) [Solved] getting date form URL then add and subtract days, having error response function (ex ":sorry, wrong input dear customer~")

I'm working on getting the date value from URL input, can add/subtract days, showing "This is wrong input of date,dear customer", such as the input below我正在从 URL 输入中获取日期值,可以加/减天数,显示“这是错误的日期输入,亲爱的客户”,例如下面的输入

input:输入:
http://.... /data?date=2022-01-01&diff=5&op={add,del} http://.... /data?date=2022-01-01&diff=5&op={add,del}
http://.... /data?date=2022-01-01&diff=13&op=add http://.... /data?date=2022-01-01&diff=13&op=add

expect output:期望 output:

The diff is: 5差异是:5

The date is: 2022-01-01日期为:2022-01-01

The new_date is: 2022-01-14新日期为:2022-01-14

 from datetime import datetime, timedelta from flask import Flask, request from datetime import date, datetime, time,timedelta # python testcodefmweb_clone.py app = Flask(__name__) @app.route('/data') def query_example(): date = request.args['date'] diff = request.args['diff'] diff_int = int(diff) diff_date = int(date) date_in_system = datetime.strptime( date, "%Y-%m-%d") new_date = date_in_system + datetime.timedelta(days = diff_int) return ''' <h1>The diff is: {}</h1> <h1>The date is: {}</h1> <h1>The new_date is: {}'''.format(diff, date_in_system, new_date) if __name__ == '__main__': # run app in debug mode on port 5000 app.run(debug=True, port=5000)

the website looks like for now (new_date calculation not working)该网站现在看起来像(new_date 计算不起作用)

The python code picture python代码图片

I search that the [try] [except] can help showing "This is wrong input of date, dear customer~"我搜索[try] [except]可以帮助显示“这是错误的日期输入,亲爱的客户~”

now I'm stocking on putting the operation add,del work to add/subtract days, and showing error for wrong input现在我正在准备将操作添加,删除工作以添加/减去天数,并显示错误输入的错误

 from datetime import datetime, timedelta from flask import Flask, request from datetime import date, datetime, time,timedelta app = Flask(__name__) @app.route('/data') def query_example(): date = request.args['date'] diff = request.args['diff'] diff_int = int(diff) date_in_system = datetime.strptime( date, "%Y-%m-%d") new_date_add = date_in_system + timedelta(days = diff_int ) new_date_minus = date_in_system - timedelta(days = diff_int ) return ''' <h1>The diff is: {}</h1> <h1>The date is: {}</h1> <h1>The new_date_minus is: {}</h1> <h1>The new_date_add is: {}'''.format(diff, date_in_system, new_date_minus,new_date_add) if __name__ == '__main__': # run app in debug mode on port 5000 app.run(debug=True, port=5000)

(pic) the website looks like (图片)网站看起来像

working on putting [try] [except] for showing user error "sorry, wrong input dear customer~" in code正在努力将[try] [except]用于在代码中显示用户错误“对不起,输入错误亲爱的客户~”

the third one putting [try] [except] that the website is not working第三个提出[try] [except]该网站无法正常工作
(pic) 3th code of website (not working) (图片)网站的第三个代码(不工作)

 from datetime import datetime, timedelta from flask import Flask, request from datetime import date, datetime, time,timedelta app = Flask(__name__) @app.route('/data') def query_example(): date = request.args['date'] diff = request.args['diff'] diff_int = int(diff) date_in_system = datetime.strptime( date, "%Y-%m-%d") new_date_add = date_in_system + timedelta(days = diff_int ) new_date_minus = date_in_system - timedelta(days = diff_int ) try: datetime.datetime.strptime(date, "%Y-%m-%d") return ''' <h1>The diff is: {}</h1> <h1>The date is: {}</h1> <h1>The new_date_minus is: {}</h1> <h1>The new_date_add is: {}'''.format(diff, date_in_system, new_date_minus,new_date_add) except ValueError: print("sorry, wrong input for date dear customer~") if __name__ == '__main__': # run app in debug mode on port 5000 app.run(debug=True, port=5000)

solved!解决了! see the code below看下面的代码

 import datetime from datetime import datetime, timedelta from flask import Flask, request from datetime import date, datetime, time,timedelta app = Flask(__name__) @app.route('/data') def query_example(): try: date = request.args['date'] diff = request.args['diff'] op = request.args.get('op') diff_int = int(diff) date_in_system = datetime.strptime( date, "%Y-%m-%d") new_date_add = date_in_system + timedelta(days = diff_int ) new_date_minus = date_in_system - timedelta(days = diff_int ) final_date = 0 if op == "add": final_date = date_in_system + timedelta(days = diff_int ) if op == "del": final_date = date_in_system - timedelta(days = diff_int ) except Exception as e: return ''' <h1>捕捉錯誤資訊: {}</h1> '''.format(diff+ str(e)) return ''' <h1>The diff is: {}</h1> <h1>The date is: {}</h1> <h1>The op is: {}</h1> <h1>The final_date is: {}'''.format(diff, date_in_system, op, final_date) if __name__ == '__main__': # run app in debug mode on port 5000 app.run(debug=True, port=5000)

(pic)website showing to user the input is wrong (图片)向用户显示输入错误的网站

(pic)website for correct input result (图片)正确输入结果的网站

I think you need to change new_date = date_in_system + datetime.timedelta(days = diff_int) to new_date = date_in_system +timedelta(days = diff_int) since you import timedelta .我认为您需要将new_date = date_in_system + datetime.timedelta(days = diff_int)更改为new_date = date_in_system +timedelta(days = diff_int) ,因为您导入timedelta

Is your expected output supposed to be:您预期的 output 应该是:

The diff is: 5
The date is: 2022-01-01
The new_date is: 2022-01-06

This code snippet below should do what you want if the new date is 2022-01-06 and not 2022-01-14 :如果新日期是2022-01-06而不是2022-01-14 ,下面的代码片段应该可以满足您的需求:

from datetime import date,  datetime, timedelta

date = "2022-01-01"
diff_int = 5

date_in_system = datetime.strptime( date,  "%Y-%m-%d")
new_date = date_in_system + timedelta(days = diff_int)

print(new_date)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM