Python日付時間関連メモ
Pythonで日付、時間を操作する際のメモ。
すーぐ忘れるので。
以下、コードスニペットのように関数を書いて行くが、以下の通りimport
してあることが前提。
from datetime import datetime as dt
from datetime import timedelta
また、日付フォーマットは断りの無い限りすべてYYYYMMDD。
日付から曜日を得る
localeを使う方法がスマートだが、文字コードの都合で採用せず。
私のメインの使用方法がWindows上の面倒な仕事を効率化することなのだが、Windows上で動かすならいまだに文字コードはcp932(Shift-JIS)にしておくのが無難。
そういったわけで自作リストでなんとかする。
def get_jpn_weekday(_date):
# 日付を受け取り、以下のリストから一つを返す
wday_list = ['月', '火', '水', '木', '金', '土', '日', ]
_tempdate = dt.strptime(_date, '%Y%m%d)
return wday_list[_tempdate.weekday()]
2つの日付の間の日をすべて返す
開始日、終了日を渡して、その期間のすべての日付に対して処理をする場合に使う。
def get_days_btwn_two(_startday, endday):
# ふたつの日付を受け取り、あいだの日付リストを返す
# datetimeに変換
_startday_dt = dt.strptime(_startday, '%Y%m%d')
_untilday_dt = dt.strptime(_untilday, '%Y%m%d')
# 日付数の算出
# 最終日も含めるため+1
_num_days = (_untilday_dt - _startday_dt).days + 1
_datelist = []
for i in range(_num_days):
_temp_day = _startday_dt + timedelta(days=i)
_datelist.append(_temp_day.strftime('%Y%m%d'))
return _datelist
2つの時間を足す
[H]H:MM
フォーマットの時間を2つ受け取り、足し合わせた時間を返す。
def add_hour(timeA, timeB):
# 時間を2つ取り、足して返す。
hourA, minA = timeA.split(':')
hourB, minB = timeB.split(':')
# 分を足し合わせ、60を超えた分を除いて記憶
shour, min = divmod(int(minA) + int(mnB), 60)
# 時間を足し合わせる
hour = int(hourA) + int(hourB) + shour
# 分の方は0埋め
return('%s:%s' % (str(hour), str(min).zfill(2)))
今日の日付を得る
ファイル名に日付を入れたいときなどに。
# 日付のみ
return(format(dt.today(), '%Y%m%d'))
# 時刻を秒まで
return(format(dt.today(), '%Y%m%d%H%M%S'))
日付シリアルにスラッシュを入れる
なんてことはない、YYYYMMDDをYYYY/MM/DDにするだけの関数
しかしいざ作ろうとするとスライスの勘定がめんどうくさい。
def get_slashed_date(dirty_date):
sanity_date = (
dirty_date[0:4] + "/" +
dirty_date[4:6] + "/" +
dirty_date[6:]
)
return sanity_date
Last Update: 2021-12-28