Как оптимизировать код с time
Пытаюсь сделать уникальный код для id-продукта из даты и времени, т.е. (день недели + месяц + год + часы + минуты + секунды), код получился громоздким, как его упростить, получив тот же результат? В результате получаю код, к примеру: 3132022235137
мой код:
timeid = time.localtime(time.time())
a = str(timeid.tm_mday) + '#' + str(timeid.tm_mon) + '#' + str(timeid.tm_year) + '#' + str(
timeid.tm_hour) + '#' + str(timeid.tm_min) + '#' + str(timeid.tm_sec)
b = a.split('#')
c = "".join(b)
Ответы (3 шт):
Зачем добавлять символ, чтобы его тут же удалить? Нужно убрать добавление # в переменную а, после этого остальные две строчки с b и c станут не нужны.
a = str(timeid.tm_mday) + str(timeid.tm_mon) + str(timeid.tm_year) + str(timeid.tm_hour) + str(timeid.tm_min) + str(timeid.tm_sec)
Кстати, если нужно удалить какой-то символ, то проще применить replace, чем разбивать строку в список и потом соединять обратно.
И если уж вам хочется делать ID, основанный на времени, то берите сразу Unix-время
timeid = str(time.time()).replace(".","")
Точность там доли секунды и даже если выполнить дважды подряд, то будут разные значения.
Не надо делать id на основе времени. В случае перевода часов они могут совпасть. Перевод может быть из-за синхронизации времени, перехода на летнее или зимнее время, смены часового пояса (как официального, так и, например, при перелёте с ноутбуком).
Лучше используй uuid.
В подомном случае я использовал
version="1." + datetime.now().strftime('%Y.%m.%d-%H%M'),
Но можно и просто
datetime.now().strftime('%Y%m%d%H%M%S')
Год и месяц переносятся вперед чтоб при сортировке легко находить новую и старую версию.