Как получить strptime из строки и сравнить с текущим временем? - PullRequest
0 голосов
/ 28 апреля 2020

Прежде всего, я очень новичок во всех python. Сейчас я пытаюсь выяснить, как заменить строку времени в определенном столбце (CSV), когда это время больше, чем текущее время.

Скрипт, из которого я строю, полагается на petl, так что это то, что я использую. Сначала исходный csv открывается с помощью petl как table1. Он содержит несколько столбцов, одним из которых является «Время окончания». В этой колонке я хотел бы заменить это время на @time? (для форматирования HTML позже), только если оно больше текущего времени.

время имеет формат, такой как "12:15". Однако я не вижу никаких изменений при запуске строки с>, но при <изменении всех значений в столбце. </p>

Строка, с которой я борюсь:

current=time.localtime()
table2= petl.convert(table1, ' End time', lambda v, row: '@'+v+'?' if time.strptime(v, '%H:%M') > current else v, pass_row=True)

Я бы тоже Хотелось бы узнать, как я могу напечатать или посмотреть, что time.strptime использует в качестве значений, это возможно?

Любые идеи высоко ценятся!

1 Ответ

0 голосов
/ 28 апреля 2020

Если вы передаете только час и минуту time.strptime, strptime автоматически заполняет пропущенные значения для года, месяца, дня с 1900, 1, 1 - так что, конечно, это всегда меньше time.localtime().

Если ваша таблица содержит время в 24-часовом формате, вы можете напрямую сравнить строки времени из вашей таблицы с местным временем в более узком смысле (только часть TIME).

Чтобы добиться этого, используйте форматирование времени следующим образом:

current = time.strftime('%H:%M',time.localtime())

Часто бывает полезно запустить интерпретатор python в оболочке и поиграть с промежуточными этапами ваших вычислений. Просто введите переменную, и вы увидите, что она оценивает:

>>> t2 = time.strptime('12:15', '%H:%M')
>>> t2
time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=15, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
...