Получить код даты и номера года и номера недели в календаре ISO 8601, используя Python - PullRequest
0 голосов
/ 26 февраля 2020

Мне нужно получить дату ISO 8601, которая отображает только номер недели и два кода di git года для данной даты в python 3.0. Это должно быть в следующем формате: YYWW (YY представляет код года с двумя цифрами git, а WW представляет номер недели). Я пытался работать с модулем datetime в python и использовать% G и% V для получения номера недели, используя strftime, но получаю ошибку значения при запуске следующего кода:

from datetime import datetime
now_iso = (datetime.now().strftime('%G%V'))

Любая помощь вам может предоставить, будет принята с благодарностью. Заранее спасибо. Вот ошибка, которую я получаю:

Traceback (most recent call last):
  File "C:\Python27\Lib\lib-tk\Tkinter.py", line 1547, in __call__
    return self.func(*args)
  File "C:/Users/ctschantz/Python Project 3/Solenoids Label Program.py", line 881, in close_part
    part_validation()
  File "C:/Users/ctschantz/Python Project 3/Solenoids Label Program.py", line 245, in part_validation
    part_label_create()
  File "C:/Users/ctschantz/Python Project 3/Solenoids Label Program.py", line 58, in part_label_create
    now_bc = (datetime.now().strftime('%G%V'))
ValueError: Invalid format string

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Краткое решение без %G и %V может быть таким:

from datetime import datetime

year, week, _ = datetime.now().isocalendar()
print("{0}{1:02}".format(year % 100, week))

{1:02} означает, что добавление 0 s к аргументу с индексом 1 до его ширины по крайней мере 2. Для получения дополнительной информации вы можете проверить Спецификация формата Mini-Language .

Если год может быть напечатан из 4 цифр, он становится однострочным:

print("{0}{1:02}".format(*datetime.now().isocalendar()))
0 голосов
/ 27 февраля 2020

Я нашел решение. Это может быть не самый красивый, но:

from datetime import datetime

now_bc = (datetime.now().isocalendar())
now_bc_year = str(now_bc[0])
year_two_digits = now_bc_year[-2:]
now_bc_week = now_bc[1]

if len(str(now_bc_week)) == 1:
    td_week = '0' + str(now_bc_week)
else:
    td_week = now_bc_week

date_code = year_two_digits + td_week

print(date_code)
...