Форматирование метки времени в колбе Python

#python #arrays #json #flask

Вопрос:

Итак, я новичок в python и flask, мне просто интересно, есть ли способ отформатировать 20210910103255 до 2021/09/10 10:32:55?? Я попытался использовать этот код. Это делает свою работу, но я хочу найти лучший способ ее реализации. Это был мой код:

 "date": as_json['array_id'].split("_")[3][:4]  '/'   as_json['array_id'].split("_")[3][4:6]   '/'   as_json['array_id'].split("_")[3][6:8]
              ' '   as_json['array_id'].split("_")[3][8:10]   ':'   as_json['array_id'].split("_")[3][10:12]   ':'   as_json['array_id'].split("_")[3][12:14]
 

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

1. date = f"{array_id[:4}/{array_id[4:6]}/{array_id[6:8]} {array_id[8:10]}:{array_id[10:12]}:{array_id[12:]}" принимая во внимание array_id = list("20210910103255")

Ответ №1:

В вашем коде нет ничего плохого, он выполняет свою работу и не тратит ненужные циклы процессора на анализ и повторное создание метки времени. Для более чистого кода попробуйте использовать f-строки:

 d = as_json['array_id'].split("_")[3]
"date": f"{d[:4]}/{d[4:6]}/{d[6:8]} {d[8:10]}:{d[10:12]}:{d[12:14]}"
 

Эта версия длиннее, но легче для понимания:

 date = as_json['array_id'].split("_")[3]

year = date[:4]
month = date[4:6]
day = date[6:8]
hours = date[8:10]
minutes = date[10:12]
seconds = date[12:14]

"date": f"{year}/{month}/{day} {hours}:{minutes}:{seconds}"
 

Или, если вы хотите пойти по пути синтаксического анализа, используйте дату и время:

 from datetime import datetime

date = as_json['array_id'].split("_")[3]
datetime_object = datetime.strptime(date, "%Y%m%d%H%M%S")
"date": datetime_object.strftime("%Y/%m/%d %H:%M:%S")
 

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

1. Спасибо, Ян! Я использовал f-строку, которую вы упомянули, и она работала идеально!

Ответ №2:

Я думаю, что дата-время было бы лучшим инструментом, чтобы помочь вам здесь.

 import datetime

x = datetime.datetime.now()
print(x)
 

Более подробную информацию можно найти здесь https://www.w3schools.com/python/python_datetime.asp

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

1. Вы должны ссылаться на официальную документацию для модуля datetime, а не на w3schools: docs.python.org/3/library/datetime.html

Ответ №3:

Вы можете использовать dateutil библиотеку для этого:

 $ pip install python-dateutil
 

На языке Python:

 >>> import dateutil
>>> dateutil.parser.parse('20210910103255').strftime('%Y/%m/%d %H:%M:%S')
'2021/09/10 10:32:55'