0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

任意の日付がその月の第何週かを求める python

Last updated at Posted at 2021-02-08

スクレイピングでカレンダーをポチポチしたいとき。
自分はxpathを使います。
その時よくあるxpathのパターンが以下(日曜始まりのカレンダー)
//[@id="cal"]/main/table/tbody/tr[3]/td[1]・・・第3週目の1日目
//
[@id="cal"]/main/table/tbody/tr[3]/td[2]・・・第3週目の2日目
//*[@id="cal]/main//table/tbody/tr[3]/td[7]・・・第3週目の7日目

カレンダーがきれいなテーブルになっています。
tr[3]がカレンダーの第3週目を表しています
もし、2021年2月28日をポチっとしたい場合(日曜始まりの場合)
xpathは
//*[@id="cal"]/main/table/tbody/tr[5]/td[1]・・・第5週目の1日目

ここで必要になるのがtr[5]の部分つまり、
任意の日付がその月のカレンダーの第〇週になるということです。

ネットで調べても難しかったので自分で関数を作成しました。

任意の日付がカレンダーの第〇週かを求める
import datetime
def get_week(year,month,day):
  """ 
   日曜始まりのカレンダーの場合任意の日付が第〇週かを求める
    Args:
        year:年
        month:月
        day:日        
    Returns
        第〇週
    """
    firstday=datetime.date(year,month,1) #任意の日付の同月1日のdate型を作成する
    hizuke=datetime.date(year,month,day) #任意の日付のdate型を作成する

    firstsyuu=firstday.strftime("%U")   #任意の日付同月1日がその年の何週目かを取得する
    nowsyuu=hizuke.strftime("%U")         #任意の日付がその年の第何週目かを取得する

    return int(nowsyuu)-int(firstsyuu)+1  #引き算して求める

strftime("%U")で年初からの週数がわかるのでうまく引き算をして求めます。
※1/1は第0週
※カレンダーが月曜日から始まる場合strftime("%W")

strftimeの説明

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?