このページでわかること
Pythonの時間に関する基本的な構文
スポンサーリンク
準備
datetimeモジュールをインポートしてください。
標準で入っているので、インストールしなくても使えると思います。
データ型はVBAと違い、複数あります。
よく使うものとしてdate型、time型、datetime型、timedelta型があります。
このあたりは自分も解釈間違っているかもしれないですが、少なくとも型を意識して使わないとうまく処理できないケースが多々見られます。
# datetime型
import datetime
# date型
from datetime import date
# time型
from datetime import time
# timedelta型
from datetime import timedelta
備忘録
現時点での時間、日付表示
# 時間
now_=datetime.datetime.now()
>> 2022-02-19 06:19:49.007467
# 日付
today_=datetime.datetime.now().date()
>> 2022-02-19
#これでも日付とれる
today_=datetime.date.date()
>> 2022-02-19
昨日
# timedeltaを使って日付を一日引く
# 注意すべきはtimedeltaは一日単位でしか使えないので、一か月とか一年とかは別の方法でやる必要がある。
# このプログラムは2022/2/23に動かしました。
import datetime as dt
today_=dt.date.today()
yesterday=today_-dt.timedelta(days=1)
yesterday
>> datetime.date(2022, 2, 22)
月初、月末
- calendarモジュールをインポート
- calendar.monthrangeに「年」、「月」を引数で渡す。
- すると、タプルで月初の曜日、月末を返してくれる。このときの月末を使用する。
- replaceでdayを変換すれば完成
import calendar
import datetime as dt
today_=dt.date(2022,5,1)
month_range=calendar.monthrange(today_.year,today_.month)
print(f"月初 : {today_.replace(day=1)}")
print(f"月末 : {today_.replace(day=month_range)}")
曜日
# weekday()は曜日を数値で返す
# 月曜日が「0」、日曜日が「7」
import datetime as dt
today_=dt.date.today()
print(f"曜日を数値で : {today_.weekday()}")
print(f"曜日を英語で(略) : {today_.strftime('%a')}")
print(f"曜日を英語で : {today_.strftime('%A')}")
datetime型のデータをdate型で処理できない
# yesterdayをdate型でとり、dataflameをyesterdayで抽出してみる
# このとき日付のあるdate列はdatetime型であるため、抽出は失敗する
import datetime as dt
today_=dt.date.today()
yesterday=today_-dt.timedelta(days=1)
df2=df[df["date"]==yesterday] # date列をyesterdayで抽出
df2
>> データなし
# date型をdatetime型に変換するのは結構むずいらしい
# ここではdate型からyear,month,dayをそれぞれとりだし、datetime型にそれぞれ入れ込んで作ってみる
import datetime as dt
today_=dt.date.today()
ye=today_-dt.timedelta(days=1) # yesterdayだと長いのでyeにした
yesterday=dt.datetime(ye.year,ye.month,ye.day) # datetime型の中にyeのyear,month,dayを入れ込んだ
df2=df[df["date"]==yesterday] # date列をyesterdayで抽出
df2
>> データあり
リスト4
スポンサーリンク