Преобразовать год-неделю в дату, условие в дату, где неделя имеет максимальное количество дней в этом месяце - PullRequest
0 голосов
/ 03 мая 2018

Позвольте мне объяснить, я пытаюсь преобразовать 5-ю неделю 2017 года; 201705 к дате, которая относится к февралю, потому что это относится к 5-й неделе года.

До сих пор я был в состоянии преобразовать пользовательский формат даты в дату следующим образом:

import datetime 
d = '201705'
dt = datetime.datetime.strptime(d+'1', '%Y%W%w')

Который затем выдает, 2017-01-30 00: 00: 00

Но есть ли способ, которым я могу преобразовать дату в февраль, и аналогичным образом все номера недели, относящиеся к месяцу, преобразуются в этот месяц

EDIT: Что мне нужно, так это если номер недели равен 5, а затем февраль, если 9, то март - своего рода отображение недели-месяца, но я не нашел никакого способа сделать это, кроме изменения года-недели на dateformat

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Быстрый тест моего комментария о выборе воскресенья в качестве произвольного дня недели, а не понедельника.

>>> import datetime
>>> d1=['201205','201305','201605','201705','201805','201905','202005','202105','202205','202305']
>>> d2=['201209','201309','201609','201709','201809','201909','202009','202109','202209','202309']
>>> for dat in d1:
...  datetime.datetime.strptime(dat+ '0','%Y%W%w')
... 
datetime.datetime(2012, 2, 5, 0, 0)
datetime.datetime(2013, 2, 10, 0, 0)
datetime.datetime(2016, 2, 7, 0, 0)
datetime.datetime(2017, 2, 5, 0, 0)
datetime.datetime(2018, 2, 4, 0, 0)
datetime.datetime(2019, 2, 10, 0, 0)
datetime.datetime(2020, 2, 9, 0, 0)
datetime.datetime(2021, 2, 7, 0, 0)
datetime.datetime(2022, 2, 6, 0, 0)
datetime.datetime(2023, 2, 5, 0, 0)
>>> for dat in d2:
...  datetime.datetime.strptime(dat+ '0','%Y%W%w')
... 
datetime.datetime(2012, 3, 4, 0, 0)
datetime.datetime(2013, 3, 10, 0, 0)
datetime.datetime(2016, 3, 6, 0, 0)                                            
datetime.datetime(2017, 3, 5, 0, 0)
datetime.datetime(2018, 3, 4, 0, 0)
datetime.datetime(2019, 3, 10, 0, 0)
datetime.datetime(2020, 3, 8, 0, 0)
datetime.datetime(2021, 3, 7, 0, 0)
datetime.datetime(2022, 3, 6, 0, 0)
datetime.datetime(2023, 3, 5, 0, 0)
>>> 

Ваш пробег может отличаться.
Я не тестировал в течение нескольких недель в этом году.

0 голосов
/ 03 мая 2018
import datetime 
d = '201705'
dt = datetime.datetime.strptime(d+'1', '%Y%W%w')
month_from_date = dt.strftime("%B")
print(dt)
print(month_from_date)

Будет выводить:

2017-01-30 00:00:00
January

Я немного сбит с толку относительно того, почему вы ожидаете февраль, потому что 01-30 на самом деле январь.

Вы можете найти больше информации о форматировании здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...