Python
プログラミング
python3
プログラミング学習

はじめに

  • 日付/時間の操作についておさらい

目次

  • 日付操作モジュール
  • datetimeクラス
  • timedeltaクラス
  • dateクラス

日付操作モジュール

日付/時間の操作

datetimeクラス

  • 年、月、日、時、分、秒、マイクロ秒

日付の操作

dateクラス

  • 年、月、日

日付/時間を数値化したものを表す

timedeltaクラス

datetimeクラス

現在日時の取得

  • now()メソッドを使用
記述例
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2017, 7, 25, 10, 1, 47, 449585)

指定日時の作成

  • Datetimeクラスのコンストラクタを使用
  • Datetimeクラスのインスタンスを生成する
構文
datetime(, , , , , , マイクロ秒)
記述例
>>> from datetime import datetime
>>> d = datetime(2017, 7, 25)
>>> d
datetime.datetime(2017, 7, 25, 0, 0)

曜日の取得

  • weekday()メソッドを使用
  • 0~6(月~日)の値が返される
記述例
>>> from datetime import datetime
>>> d = datetime(2017, 7, 25)
>>> d.weekday()
1

日時の文字列変換

  • strftime()メソッドを使用
記述例
>>> from datetime import datetime
>>> d = datetime(2017, 7, 25)
>>> d.strftime('%Y-%m-%d')
'2017-07-25'

文字列を日時に変換

  • strptime()メソッドを使用
記述例
>>> from datetime import datetime
>>> datetime.strptime('2017-07-25', '%Y-%m-%d')
datetime.datetime(2017, 7, 25, 0, 0)
>>> print(datetime.strptime('2017-07-25', '%Y-%m-%d'))
2017-07-25 00:00:00

書式の種類

書式 意味
%a ロケールにおける省略形の曜日名
%A ロケールにおける省略なしの曜日名
%b ロケールにおける省略形の月名
%B ロケールにおける省略なしの月名
%c ロケールにおける適切な日付および時刻表現
%d 月の始めから何日目かを表す10進数(01, 31)
%H (24時間計での)時を表す10進数(00, 23)
%I (12時間計での)時を表す10進数(01, 12)
%j 年の初めから何日目かを表す10進数(001, 366)
%m 月を表す10進数(01, 12)
%M 分を表す10進数(00, 59)
%p ロケールにおけるAMまたはPMに対応する文字列
%S 秒を表す10進数(00, 61)
%U 年の初めから何周目か(日曜を週の始まりとする)を表す10進数(00, 53)
年が明けてから最初の日曜日までの全ての曜日は0週目に属するとみなされる
%w 曜日を表す10進数(0[日曜日], 6)
%W 年の初めから何周目か(日曜を週の始まりとする)を表す10進数(00, 53)
年が明けてから最初の月曜日までの全ての曜日は0週目に属するとみなされる
%x ロケールにおける適切な日付の表現
%X ロケールにおける適切な時刻の表現
%y 上2桁なしの西暦年を表す10進数(00, 99)
%Y 上2桁付きの西暦年を表す10進数
%Z タイムゾーンの名前(タイムゾーンが無い場合は空文字列)
%% 文字 "%" 自体の表現

timedeltaクラス

日時を数値で表す

  • 日時の加算、減算に利用する
  • インスタンス作成時に以下の引数を指定する
    • days
    • seconds
    • microseconds
    • milliseconds
    • minutes
    • hours
    • weeks
記述例
>>> from datetime import datetime,timedelta
>>> d = datetime(2017, 7, 25)
>>> d - timedelta(days=5)
datetime.datetime(2017, 7, 20, 0, 0)
>>> print(d - timedelta(days=5))
2017-07-20 00:00:00

dateクラス

日付の作成

  • dateクラスのインスタンスを生成する
記述例
>>> from datetime import date
>>> d = date(2017, 7, 25)
>>> d
datetime.date(2017, 7, 25)
>>> print(d)
2017-07-25