calendarcodediamondfacebookfingerglobalgoogleplushatenahomepagetopplainpocketrssservicetwitterwordpresshome2searchfoldernext-arrowback-arrowfirst-arrowlast-arrow

Python : 日付の基本操作編(datetime 型、date 型、strptime など)

datetime モジュールは、日時データを処理するクラスを提供する。日時や時間を扱う型が用意されている。datetime 型は、属性を指定して日付や時間を参照できる。

エンジニア速報は Twitter の@commteで 1 日 5 回配信しています。

Sponsored Link

目次

日付や時間の型には次のようなものがある。

役割
datetime 日時を扱う。日付と時刻を対象とする。
date 日付を扱う。年月日を対象とする
time 時間を扱う。時分秒と端数を対象とする。
timedelta 日付、時間の計算を扱う。

datetime

datetime のポイント

  • 変更不可能(イミュータブル)である
  • 日付、時間、曜日の計算を行う
  • 引数に日付や時間を指定する
  • フォーマット文字列の変換が可能である
  • ハッシュ可能である

datetime モジュールは、日時データ(日付と時刻を含む)を処理する。date オブジェクトは、年月日を指定し、その値を属性として取り出すことができる。

主な属性

属性 意味
year
month
day
hour
minute
second
microsecond マイクロ秒

datetime クラス の構文は次のようになる。引数で指定した年月日時、分秒、マイクロ秒の datetime 型を生成する。次のコードは、分かりやすいように改行している。

datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0)

数値を入力してみよう。時刻も対象となっている。この例は 2021 年 12 月 24 日午前 3 時 30 分 20 秒を示している。

from datetime import datetime xmas = datetime(2021, 12, 24, 3, 30, 20) xmas.hour # 3 xmas.minute # 30 xmas.second # 20

detetime オブジェクトには、isoformat() メソッドがある。中央の T は日付と時刻を分割している。

from datetime import datetime xmas = datetime(2021, 12, 24, 3, 30, 20) xmas.isoformat() # 2021-12-24T03:30:20

now()

datetime の now()メソッドは、現在の日付と時刻を取得できる。

from datetime import datetime now = datetime.now() now # datetime.datetime(2021, 10, 25, 4, 17, 42, 641682) now.year # 2021 now.month # 10 now.day # 25 now.hour # 4 now.minute # 20 now.second # 13 now.microsecond # 150095

combine()

combine()は、date オブジェクトと time オブジェクトを結合して、datetime オブジェクトを作ることができる。

from datetime import date, datetime, time noon = time(12) this_day = date.today() noon_today = datetime.combine(this_day, noon) noon_today # datetime.datetime(2021, 10, 25, 12, 0)

strptime()

日時データは、strptime()メソッドを使えば、文字列と datetime 型は相互に変換できる。

datetime.strptime("日付文字列", "フォーマット文字")

文字列から datetime 型を生成する。

from datetime import datetime d = datetime.strptime("2021/10/23 12:01:11", "%Y/%m/%d %H:%M:%S") print(d) # 2021-10-23 12:01:11

strptime() の書式指定子一覧表

書式指定子 単位 範囲
%Y 年 西暦 4 桁 1900- 2021
%y 西暦 2 桁 19- 21
%m 月 10 進表記 01-12 10
%B 月名 January, Octobar
%b 月名 略称 Jan, Oct
%d 日 10 進表記 01-31 25
%A 曜日 Sunday, Monday
%a 曜日 略称 Sun, Mon
%H 時間(24 時間) 00-23 18
%I 時間(12 時間) 00-12 06
%p 午前、午後 AM, PM AM
%M 分 10 進表記 00-59 05
%S 秒 10 進表記 00-59 48

現在の日時を取得する

現在の日時等を取得するには datetime.now() を使う。これは現在日時の datetime 型を生成して返すメソッドである。

datetime.now()

現在の日付を取得してフォーマットする。

import datetime now = datetime.datetime.now() now.strftime("%Y/%m/%d %H:%M:%S") # 2021/10/25 06:05:08

リテラルを使う方法。

f"{now:%Y/%m/%d - %H:%M:%S}" # 2021/10/25 - 06:05:08

time --- 時刻データへのアクセスと変換 — Python 3.10.0b2 ドキュメント

date

date 型は、日付を扱うことができる。

date(year, month, day)

引数で指定する年月日の date 型を生成する。

from datetime import date xmas = date(2021, 12, 24) xmas # datetime.date(2021, 12, 24) xmas.day # 24 xmas.month # 12 xmas.year # 2021

次のようにフォーマットすると、日付の部分が整形され、時刻は深夜 0 時 0 分になる。

from datetime import date s = date(2023, 11, 1) fmt = "%A, %B, %d, %Y, %I:%M:%S" s.strftime(fmt) # Wednesday, November, 01, 2023, 12:00:00

現在の日付を取得する場合、date.today() メソッドを使う。

from datetime import datetime, date d = date.today() s = d.strftime("%Y/%m/%d") print(s) # 2021/10/26

timedelta 型

timedelata 型は、日時の計算を行う。次に示すコードは、10 日後の日付を計算したものである。

from datetime import datetime, date, time, timedelta d = date.today() y = d + timedelta(days=10) print(y) # 2021-11-05

Python おすすめ本

スポンサード リンク

Comments

Leave a Comment

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください