Python 3.6 - Назначить строку 'YYYY-MM-DD' для переменной как тип данных datetime? - PullRequest
0 голосов
/ 11 июня 2018

Я обрабатываю сообщения, полученные от 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

1 Ответ

0 голосов
/ 11 июня 2018

Я думаю, вы можете искать метод datetime.strptime().

Вот ссылка.

https://docs.python.org/3.6/library/datetime.html#datetime.datetime.strptime

...