У меня есть функция, которая, как предполагается построить заголовок для календаря, как так:рендеринг текста Календарь
' Sun Mon Tue Wed Thu Fri Sat '
Он принимает isoweekday (один из "#Monday 1, 2, 3, 4 , 5, 6, 7 '# Суббота').
Вот код:
@staticmethod
def _isoweekday_to_str(isoweekday):
isoweekday = isoweekday - 1
isoweekday = str(isoweekday)
x = datetime.strptime(isoweekday, '%w')
return x.strftime('%a')
TEXT_CAL_MONTH_WEEK_HEADER = ""
iter_isoweekday = week_start
for _ in range(0,7):
TEXT_CAL_MONTH_WEEK_HEADER += self._isoweekday_to_str(iter_isoweekday).rjust(TEXT_CAL_CELL_WIDTH, " ")
if iter_isoweekday != 7:
iter_isoweekday += 1
else:
iter_isoweekday = 1
Выход я получаю при переходе в 4, как в начале недели, это:
' Mon Mon Mon Mon Mon Mon Mon '
должно быть:
' Thu Fri Sat Sun Mon Tue Wed '
Я действительно, действительно не что происходит. Я думаю, что это как-то связано с тем, как назначаются переменные, строковая мутация или библиотека datetime.
UPDATE: похоже, что проблема datetime.strptime. Независимо от того, что я прохожу, я получаю datetime (1900, 1, 1, 0, 0) назад ... который, как вы догадались, был в понедельник.
Помощь?
'datetime.strptime (isoweekday, '% ш')' возвращает 'datetime.datetime (1900, 1, 1, 0, 0)' нет вопрос какой 'isoweekday' есть. –