Home > Mobile >  Adding a user specified date to existing code - Python
Adding a user specified date to existing code - Python

Time:03-19

I'm a but stuck with being able to add a user defined date to this Days to Go code. Works well with a set date embedded. But can't get this to work with the input lines.

`from datetime import datetime, time

b=input
event = (input('What is the name of your event?')) #input the name of the event
year = int(input('Enter a year'))  #input the requires year
month = int(input('Enter a month')) #input the required month
day = int(input('Enter a day'))  #input the required day

def date_diff_in_seconds(dt2, dt1):
timedelta = dt2 - dt1
return timedelta.days * 24 * 3600   timedelta.seconds

def dhms_from_seconds(seconds):
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)
days, hours = divmod(hours, 24)
return (days, hours, minutes, seconds)

#Specified date
date1 = datetime.date(b[1],b[2],b[3])

#Current date
date2 = datetime.now()

print("\n%d days, %d hours, %d minutes, %d seconds" % 
dhms_from_seconds(date_diff_in_seconds(date2, date1)))
print()`

Any help would be appreciated!

CodePudding user response:

I think your problem is likely this line:

date1 = datetime.date(b[1],b[2],b[3])

Try changing it to this:

date1 = datetime.date(year, month, day, 0, 0, 0)

CodePudding user response:

First, you wrongly used b=input. It means you want to use input function with function name b, such as event = b('what is the name of your event?').

Instead, you can assign values to b like b = (event, year, month, day) after getting information using input().

And you imported datetime module by from datetime import datetime you don't need to explitly say datetime.date, just date. However, you can use datetime rather than date here, as follows:

from datetime import datetime, time

#b = input -> wrong usage
event = (input('What is the name of your event? '))  # input the name of the event
year = int(input('Enter a year '))  # input the requires year
month = int(input('Enter a month '))  # input the required month
day = int(input('Enter a day '))  # input the required day
b = (event, year, month, day) # you can assign date values to b

def date_diff_in_seconds(dt2, dt1):
    timedelta = dt2 - dt1
    return timedelta.days * 24 * 3600   timedelta.seconds


def dhms_from_seconds(seconds):
    minutes, seconds = divmod(seconds, 60)
    hours, minutes = divmod(minutes, 60)
    days, hours = divmod(hours, 24)
    return (days, hours, minutes, seconds)


# Specified date
date1 = datetime(b[1], b[2], b[3]) # not datetime.date()

# Current date
date2 = datetime.now()

print("\n%d days, %d hours, %d minutes, %d seconds" %
      dhms_from_seconds(date_diff_in_seconds(date2, date1)))
print()

The result is like:

What is the name of your event? birthday
Enter a year 2022
Enter a month 03
Enter a day 19

0 days, 14 hours, 40 minutes, 2 seconds
  • Related