今回はGW期間ということで
まじめなプログラミングの話です
解説動画はこちら
自粛要請出されちゃってますんで
家にいてやることないなら
勉強して同僚に差をつけちゃいましょう!!
今回は日付操作のお話です
Pythonでは日付操作を行うのに
datetimeというライブラリがあり
これを用いることで日付のデータを
扱う事ができます
datetimeライブラリの読み込み
これで日付のデータを
取り扱う準備が出来ました
まず最初に覚えることとして
日付に関わるデータ型が3つ有ります
これを相互に変換していきましょう
datetime型にする
文字列 ⇒ datetime
datetime.strptime(文字列 , 時間フォーマット)
文字列型にする
datetime ⇒ 文字
unix_timestamp ⇒ 文字
datetime.fromtimestamp(UnixTimeStamp値).strftime(時間フォーマット)
unix_timestamp値にする
datetime ⇒ unix_timestamp
int(datetime型の変数.timestamp())
文字 ⇒ unix_timestamp
int(datetime.strptime(日付文字列,時間フォーマット).timestamp())
これで色々なデータに変換する事ができます
次は日付の計算です
2021-04-21 15:12:59
2021-05-01 15:02:59
2021-05-01 15:12:49
2021-05-01 15:12:58.990000
2021-05-01 15:12:58.999990
ただし、月や年単位の場合は
relativedeltaを用いるようです
2020-07-01 15:12:59
来月の1日とか月末みたいなものを出す
timedeltaを組み合わせると
1日や月末の日付なども求められます
まじめなプログラミングの話です
解説動画はこちら
自粛要請出されちゃってますんで
家にいてやることないなら
勉強して同僚に差をつけちゃいましょう!!
今回は日付操作のお話です
Pythonでは日付操作を行うのに
datetimeというライブラリがあり
これを用いることで日付のデータを
扱う事ができます
datetimeライブラリの読み込み
from datetime import datetime , timedelta
これで日付のデータを
取り扱う準備が出来ました
まず最初に覚えることとして
日付に関わるデータ型が3つ有ります
・文字列型
・datetime型
・unixtimestamp(整数型)
これを相互に変換していきましょう
datetime型にする
文字列 ⇒ datetime
datetime.strptime(文字列 , 時間フォーマット)
day = datetime.strptime('2021-05-01 15:12:59','%Y-%m-%d %H:%M:%S')
print(day)
2021-05-01 15:12:59day = datetime.strptime('2021-05-01','%Y-%m-%d')
print(day)
2021-05-01 00:00:00unix_timestamp ⇒ datetime
datetime.fromtimestamp(UnixTimeStamp値)
day = datetime.fromtimestamp(1619849579) print(day)2021-05-01 15:12:59
文字列型にする
datetime ⇒ 文字
datetime型の変数.strftime(時間フォーマット)
date_dt = datetime.now()
st = date_dt.strftime('%Y-%m-%d %H:%M:%S')
print(st)
2021-05-01 16:18:27unix_timestamp ⇒ 文字
datetime.fromtimestamp(UnixTimeStamp値).strftime(時間フォーマット)
st = datetime.fromtimestamp(1619849579).strftime('%Y-%m-%d %H:%M:%S')
print(st)
2021-05-01 15:12:59unix_timestamp値にする
datetime ⇒ unix_timestamp
int(datetime型の変数.timestamp())
date_dt = datetime.now() unix = int(date_dt.timestamp()) print(unix)1619853623
文字 ⇒ unix_timestamp
int(datetime.strptime(日付文字列,時間フォーマット).timestamp())
unix = int(datetime.strptime('2021-05-01 15:12:59','%Y-%m-%d %H:%M:%S').timestamp())
print(unix)
1619849579これで色々なデータに変換する事ができます
次は日付の計算です
timedeltaを用いて日付の計算が行えます
まずはdatetime型のデータを用意しましょう
まずはdatetime型のデータを用意しましょう
date_dt = datetime.strptime('2021-05-01 15:12:59','%Y-%m-%d %H:%M:%S')
print(date_dt)
2021-05-01 15:12:59datetime の加算(timedelta)を行う場合は
下記のようなコードで計算できます
下記のようなコードで計算できます
datetime +- timedelta(単位=加算する量)
print(date_dt - timedelta(weeks=10)) # 週 print(date_dt - timedelta(days=10)) # 日2021-02-20 15:12:59
2021-04-21 15:12:59
print(date_dt - timedelta(hours=10)) # 時間 print(date_dt - timedelta(minutes=10)) # 分 print(date_dt - timedelta(seconds=10)) # 秒 print(date_dt - timedelta(milliseconds=10)) # ミリ秒 print(date_dt - timedelta(microseconds=10)) # マイクロ秒2021-05-01 05:12:59
2021-05-01 15:02:59
2021-05-01 15:12:49
2021-05-01 15:12:58.990000
2021-05-01 15:12:58.999990
ただし、月や年単位の場合は
relativedeltaを用いるようです
from dateutil.relativedelta import relativedelta print(date_dt - relativedelta(years=10)) # 年 print(date_dt - relativedelta(months=10)) # 月2011-05-01 15:12:59
2020-07-01 15:12:59
曜日の判定
weekdayで月曜日を 0,日曜日を 6 として
曜日を整数で返すのでそれをうまく使います
曜日を整数で返すのでそれをうまく使います
datatime.date(年,月,日).weekday()
datetime型の変数.weekday()
wd = ["月", "火", "水", "木", "金", "土", "日"]
date_dt = datetime.strptime('2021-05-01 15:12:59','%Y-%m-%d %H:%M:%S')
print(date_dt.weekday())
print(wd[date_dt.weekday()])5
土
X日分の日付リストを作る
日付のリストを作るとかは
業務で良く出てくるコードです
サンプルを載せておきます
X日分の日付リストを作る
日付のリストを作るとかは
業務で良く出てくるコードです
サンプルを載せておきます
from datetime import datetime , timedelta
X = 4
days , day = [] , datetime.strptime('2018-05-01','%Y-%m-%d')
for i in range(X):
tmp = day + timedelta(days=i)
days.append(tmp.strftime('%Y-%m-%d'))
print(days)['2018-05-01', '2018-05-02', '2018-05-03', '2018-05-04']来月の1日とか月末みたいなものを出す
timedeltaを組み合わせると
1日や月末の日付なども求められます
# 今日
today = datetime.strptime('2021-04-03 15:12:59','%Y-%m-%d %H:%M:%S')
print(today)
# 来月の1日
first_day = (today + relativedelta(months=1)).replace(day=1)
print(first_day.strftime('%Y-%m-%d'))
# 2ヶ月後の月末
last_day = ((today + relativedelta(months=3)).replace(day=1) - timedelta(days=1))
print(last_day.strftime('%Y-%m-%d'))2021-04-03 15:12:59
2021-05-01
2021-06-30
まあどんな言語でも日付操作はできると思いますが
こんな感じで様々な日付を求める事が
簡単に出来るのもPython言語の
良いところですね
覚えておくと業務が捗る事
間違いないです
なおこういった良く使う系のコードは
こちらにまとめていますので
もし良ければ見てみてください
Pythonチートシート
今回はこれまでです
それでは
まあどんな言語でも日付操作はできると思いますが
こんな感じで様々な日付を求める事が
簡単に出来るのもPython言語の
良いところですね
覚えておくと業務が捗る事
間違いないです
なおこういった良く使う系のコードは
こちらにまとめていますので
もし良ければ見てみてください
Pythonチートシート
今回はこれまでです
それでは

コメントする