- 必要ライブラリ
- 文字列からタイムスタンプを取得
- 曜日
- 祝日フラグ
- 次の日が休日
- 次の日が平日
- 元旦から何日目か
- 年と週番号(元旦から第何週目か)
- 月と日
- 年度始めから何日目か
- その月の平日と休日の一覧
- その月に平日と休日が何日あるか
- 一年前の今日に一番近い同じ曜日の日付
- 特定の日付からの経過日数
- 全体
タイムスタンプの文字列から、日付に関する特徴(情報)を計算する。 たまに行うのでめも。
必要ライブラリ
こちらから jpholiday
をインストール、祝日の判定に使用する。
ありがたい。
from datetime import datetime, date, timedelta import calendar import jpholiday import numpy as np
文字列からタイムスタンプを取得
文字列を %Y/%m/%d
(年/月/日) としてパースする。年月日以外の各種ディレクティブ(記号)の意味はドキュメントを参照。
# 2019/6/30から年月日をパース timestamp_str = '2019/6/30' t = datetime.strptime(timestamp_str, '%Y/%m/%d')
曜日
datetime --- 基本的な日付型および時間型 — Python 3.7.4 ドキュメント
# 月:0 ~ 日:6 のint型で取得
weekday = t.weekday()
祝日フラグ
holidayflag = jpholiday.is_holiday(t.date())
次の日が休日
beginofh = jpholiday.is_holiday(t.date()+ timedelta(days=1)) or (t.date() + timedelta(days=1)).weekday()>4
次の日が平日
endofh = not(jpholiday.is_holiday(t.date()+ timedelta(days=1))) and (t.date() + timedelta(days=1)).weekday()==0
元旦から何日目か
tm_yday
に年度始めからの日数が保存されている。tm_zone
など他のものは上記ドキュメント参照。
dayofyear = t.timetuple().tm_yday
年と週番号(元旦から第何週目か)
date.isocalendar()
はISO 年、ISO 週番号、ISO 曜日を返す。
year, weekofyear, _ = t.isocalendar()
月と日
month, day = t.month, t.day
年度始めから何日目か
年度始めからの日数の差分を求める。
# X年4月1日からの経過日数 frombiginofyear = (t.date() - datetime(t.year-(t.month<4)*1, 4, 1).date()).days
その月の平日と休日の一覧
# 特定の年月の平日・休日一覧を取得 def getdaytypelistfromYM(year, month): weekdays, holydays = [], [] for i in range(calendar.monthrange(year, month)[1]): if datetime(year, month, i+1).weekday()<5 and not jpholiday.is_holiday(date(year, month, i+1)): # 平日の場合 weekdays += [i+1] else: # 休日・祝日 holydays += [i+1] return weekdays, holydays weekdays, holydays = getdaytypelistfromYM(year, month)
その月に平日と休日が何日あるか
上記「その月の平日と休日」のリストの長さ。
weekdays, holydays = getdaytypelistfromYM(year, month) numofweekdays, numofholydays = len(weekdays), len(holydays)
一年前の今日に一番近い同じ曜日の日付
nearestwd = date(year-1, month, day) for i in range(4): # 一年前 + i日後の曜日と比較 if weekday == (nearestwd + timedelta(days=i)).weekday(): nearestwd = date(year-1, month, day) + timedelta(days=i) break # 一年前 - i日後の曜日と比較 if weekday == (nearestwd + timedelta(days=-i)).weekday(): nearestwd = date(year-1, month, day) + timedelta(days=-i) break
特定の日付からの経過日数
# 2017/6/30 から何日経過したか daydiff = (t.date() - datetime(2017, 6, 30).date()).days

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る