Python: позиция недели следующих месяцев - PullRequest
5 голосов
/ 11 августа 2011

Учитывая дату, откуда вы знаете положение дня недели в месяце (например, третий вторник месяца) и как получить дату того же дня недели в следующем месяце (например: третий вторник месяца +1)

Ответы [ 4 ]

3 голосов
/ 11 августа 2011

Посмотрите на модуль datetime . В частности, день недели метод дата объект. isocalendar также может быть полезным.

2 голосов
/ 11 августа 2011

Посмотрите на dateutil

2 голосов
/ 11 августа 2011

В приведенных ниже примерах d - это объект datetime.date.

Чтобы получить «индекс» дня за текущий месяц, используйте

def weekday_index(d):
    return (d.day + 6) // 7

Эта формулабудет работать независимо от того, какой день недели на самом деле.Чтобы получить день, который совпадает с тем же днем ​​недели с тем же индексом дня недели в следующем месяце, самый простой способ выглядит так:

d_next = d + datetime.timedelta(weeks=4)
if weekday_index(d_next) < weekday_index(d):
    d_next += datetime.timedelta(weeks=1)

При этом используется тот факт, что искомая дата составляет 4 недели или5 недель после d.

1 голос
/ 17 ноября 2013
import datetime
cnt=1
d=datetime.datetime.now()
d1=datetime.datetime(d.year,d.month,1,d.hour,d.minute,d.second,d.microsecond)
while(d1.day!=d.day):
  if 6-d1.weekday()==1:cnt=cnt+1
  d1=d1+datetime.timedelta(days=1)
print cnt #print current date week position
...