Я обрабатываю сообщения, полученные от RabbitMQ, используя скрипт Python 3.6.
Я разделяю каждую строку сообщения, используя запятые, которые разделяют каждую часть его содержимого.Затем я назначаю их как значения переменным при настройке их типа данных ...
Я получаю целые числа, десятичные дроби и строки в каждом сообщении и могу устанавливать их по мере необходимости, однако в двух полях сообщения, которое я получаю, 'ГГГГ-ММ-ДД 'и строка' ЧЧ: мм: СС ', разделенные запятыми.
В идеале я хотел бы назначить их переменным как объекты даты и времени, чтобы я мог использовать их в вычислениях позже в моем скрипте...
Мне кажется, что я не могу этого сделать, и я думаю, что это может быть не Pythonic способ делать вещи - как, когда я ранее работал со значениями datetime, которые были получены какстрок, мне пришлось преобразовать их в функцию, которая выполняет любые необходимые вычисления ...
По сути, я никогда не преобразовывал (из строки) и не сохранял тип данных datetime как переменную в Python, и при этом явидел это сделано еще где ...
Прав ли я, думая, что это невозможно или что это не хорошая практика и эта датаили значения времени должны храниться как строки (или целые числа) до тех пор, пока они не потребуются, а затем любые преобразования должны быть выполнены в функции, которая обрабатывает / или вычисляет с использованием этих значений?
Концептуально я бы хотел иметь возможность сделатьчто-то вроде:
todays_date = '2018-06-11' # assign a date string to a variable
todays_date = date(todays_date) # convert the date string to a date datatype
, затем позже используйте значение todays_date в простой проверке, как показано ниже ...
if todays_date == date.today():
do something...
или аналогично со временем, например,
stored_time = '18:03:23' # assign time to a variable as a string
stored_time = time(stored_time) # convert the string to a time datatype
if stored_time - now() > (03:00:00):
do something...
Я не видел ничего подобного во время поиска, поэтому я не думаю, что это возможно, хотя логически вы могли бы подумать, что это так, но я хотел проверить на случай, если я что-то неправильно понимаю ...
Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ: Благодаря ответу Мулли, приведенному ниже, я смог назначить строки в качестве значений переменной даты и времени, используя следующие параметры:
msg[3] = datetime.strptime(msg[3],"%Y-%m-%d") # YYYY-MM-DD
msg[4] = datetime.strptime(msg[4], "%H:%M:%S.%f") # HH:MM:SS.sss