Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
deltatime calculation
#1
hello.

i have problems with delta time calc. there are 2 relevant var, that a user input: date of order and number of weeks to deliver the order.

another var is the calculated date (order date + weeks to deliver)

import sqlite3
import datetime

conn = sqlite3.connect('dfsl.db')
c = conn.cursor()


def create_table():
    c.execute("CREATE TABLE IF NOT EXISTS orders (Client TEXT, Model TEXT, Quantity TEXT, Order_date DATE, Delivery_date INTEGER, Delivery_date_c DATE)")
    conn.commit()


def dynamic_data_entry():
    client = input('Please enter client name: ')
    model = input('Please enter model name: ')
    quantity = input('Please enter quantity: ')
    order_date = input('Please enter order date YYYY-MM-DD: ')
    delivery_date = int(input('Please enter number of weeks fot delivery date: '))
    delivery_date_c = datetime.date(order_date) + datetime.timedelta(weeks=delivery_date) # str(datetime.timedelta(weeks=delivery_date))


    c.execute("INSERT INTO orders (Client, Model, Quantity, Order_date, Delivery_date, Delivery_date_c) VALUES (?, ?, ?, ?, ?, ?)",
              (client, model, quantity, order_date, delivery_date, delivery_date_c))

    conn.commit()

def read_from_db():
    c.execute('SELECT client, model, quantity, delivery_date_c FROM orders')

    for row in c.fetchall():
        print(row)

create_table()

dynamic_data_entry()

read_from_db()

conn.close()
Reply
#2
Can you be more specific about what the problem is?
Do you get an error? In that case post the full error traceback message, in error tags.
Is the result not as expected? In that case present your actual result vs. desired outcome.
Reply
#3
@J.crater, im sorry you are right. as you can see in the error below, the user input regarding order date was:2018-01-01. the user obligated to the client to deliver in 2 weeks. i want the outcome to show 2018-01-15
please see below the error:

Error:
Please enter client name: dd Please enter model name: dd Please enter quantity: 2 Please enter order date YYYY-MM-DD: 2018-01-01 Please enter number of weeks fot delivery date: 2 Traceback (most recent call last): File "/Users/davidfrucht/PycharmProjects/dfsl_db/DFSL.py", line 35, in <module> dynamic_data_entry() File "/Users/davidfrucht/PycharmProjects/dfsl_db/DFSL.py", line 19, in dynamic_data_entry delivery_date_c = datetime.date(order_date) + datetime.timedelta(weeks=delivery_date) # str(datetime.timedelta(weeks=delivery_date)) TypeError: an integer is required (got type str)
Reply
#4
can someone help me please
Reply
#5
You most first parse the date input with strptime() then add 5 weeks.
>>> from datetime import datetime
>>> 
>>> order_date = '2018-10-11'
>>> delivery_date = 5
>>> dt = datetime.strptime(order_date, '%Y-%m-%d')
>>> dt
datetime.datetime(2018, 10, 11, 0, 0)
>>> # Now can add weeks
>>> dt + timedelta(weeks=delivery_date)
datetime.datetime(2018, 11, 15, 0, 0)
Reply
#6
thanks !!!!

just one little mistake, there should be another .datetime before the .strptime
datetime.datetime.strptime(order_date, '%Y-%m-%d')
Reply
#7
(May-19-2018, 07:39 AM)D_frucht Wrote: just one little mistake, there should be another .datetime before the .strptime
well, it's not a mistake. Note the difference between snipssat code from datetime import datetime and yours import datetime. Both are correct, but latter on, there is difference how you reference
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020