簡體   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~")

我正在從 URL 輸入中獲取日期值,可以加/減天數,顯示“這是錯誤的日期輸入,親愛的客戶”,例如下面的輸入

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

期望 output:

差異是:5

日期為:2022-01-01

新日期為: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)

該網站現在看起來像(new_date 計算不起作用)

python代碼圖片

我搜索[try] [except]可以幫助顯示“這是錯誤的日期輸入,親愛的客戶~”

現在我正在准備將操作添加,刪除工作以添加/減去天數,並顯示錯誤輸入的錯誤

 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)

(圖片)網站看起來像

正在努力將[try] [except]用於在代碼中顯示用戶錯誤“對不起,輸入錯誤親愛的客戶~”

第三個提出[try] [except]該網站無法正常工作
(圖片)網站的第三個代碼(不工作)

 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)

解決了! 看下面的代碼

 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)

(圖片)向用戶顯示輸入錯誤的網站

(圖片)正確輸入結果的網站

我認為您需要將new_date = date_in_system + datetime.timedelta(days = diff_int)更改為new_date = date_in_system +timedelta(days = diff_int) ,因為您導入timedelta

您預期的 output 應該是:

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

如果新日期是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