(python Flask)获取日期形式URL然后加减天数,具有错误响应功能(例如“:对不起,亲爱的顾客输入错误~”)

问题描述 投票:0回答:1

我正在努力从URL输入中获取日期值,可以添加/减去天数,显示“这是错误的日期输入,亲爱的客户”,例如下面的输入

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

期望输出:

差异为: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)

the website looks like for now (new_date 计算不起作用)

The python code picture

我搜到

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

(pic) the website looks like

正在努力将

[try] [except]
用于在代码中显示用户错误“抱歉,输入错误亲爱的顾客~”

第三个放

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

解决了!看下面的代码

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

python date datetime flask url
1个回答
0
投票

我认为您需要将

new_date = date_in_system + datetime.timedelta(days = diff_int)
更改为
new_date = date_in_system +timedelta(days = diff_int)
,因为您导入了
timedelta

您的预期输出应该是:

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)
© www.soinside.com 2019 - 2024. All rights reserved.