Путаница, связанная с импортом даты и времени (Строки и даты)

#python #string #datetime #object #attributeerror

Вопрос:

Я действительно застрял на этой части своего кода, и было бы удивительно получить какой-то вклад от кого-то другого. Я не писал этот раздел, и я не могу связаться с человеком, который это сделал (это групповой проект). Он действительно выдает ошибки, когда вы неправильно форматируете ввод (мы не обязаны выполнять проверки для этого проекта, поэтому я бы не беспокоился об этом), но меня беспокоят эти ошибки:

 Traceback (most recent call last):  File "/Users/mycomputer/PycharmProjects/project/main.py", line 46, in lt;modulegt;  stringsdates()  File "/Users/mycomputer/PycharmProjects/project/main.py", line 29, in stringsdates  birthmonth = birthday.month AttributeError: 'str' object has no attribute 'month'  

Любая помощь будет очень признательна Кстати, вот код:

 import datetime  def yearadd(date):  test = datetime.timedelta(days=365)  return date   test  def stringsdates():  # Inputs for first and last name, start date and birthday along with yearly salary.   firstname = input("What is your first name? ")  lastname = input("What is your last name? ")  startdate = input("What is the date you started with the company? (YYYY MM DD) ")  birthday = input("What is your birthday? (YYYY MM DD) ")  yearlysal = input("What is your yearly salary? ")   # ♡ Processing  startdate = datetime.datetime.strptime(startdate, "%Y %m %d")  birthdate = datetime.datetime.strptime(birthday, "%Y %m %d")  yearhired = startdate.year  birthmonth = birthday.month  today = datetime.datetime.today()   formatfullname = (firstname   lastname   ", "   firstname[0]   "."   lastname   ", "   lastname   ", "   firstname[  0]   ".")  employeenum = firstname.upper()[0]   lastname.upper()[0]   "-"   str(yearhired)   "-"   str(birthmonth)  reviewdate = yearadd(yearhired)  nextbday = today - birthdate   # ♡ Output  print(formatfullname)  print(employeenum)  print(reviewdate)  print(nextbday)  print(yearlysal)  

Комментарии:

1. вы получаете доступ birthday.month , но, возможно, вы имели в виду birthdate.month ? birthday пришло с вашего ввода, так что это будет строка

Ответ №1:

Вы пытаетесь прочитать месяц рождения, birthday.month где день рождения-это строка, которую вы читаете от пользователя, и поскольку тип строки не имеет связанного с ним атрибута месяца, вы получаете сообщение об ошибке. То, что вы, вероятно, хотели использовать, было преобразованным объектом datetime birthdate .

 birthmonth = birthdate.month  

Комментарии:

1. Это сработало, большое вам спасибо! Сейчас появилось несколько новых ошибок, но изменение даты рождения было хорошим 🙂 Файл «/Users/user/PycharmProjects/project/main.py», строка 30, в файле stringsdates reviewdate = yearadd(нанятый год) «/Users/user/PycharmProjects/project/main.py», строка 8, в yearadd дата возврата ошибка типа теста: неподдерживаемые типы операндов для : ‘int’ и ‘datetime.timedelta’ Я очень сожалею о своей неопытности: (У меня такое чувство, что где-то требуется int, но я не совсем уверен, как его реализовать, если это решение?

2. Рад помочь. Что касается вашей новой ошибки, похоже, вы пытаетесь добавить test datetime.timedelta объект с целым числом. Я думаю, вы можете просто исправить это, взяв test.days . Так что просто измените его на return date test.days . И, пожалуйста, примите ответ, если вы нашли его полезным.