ロゴ

プログラミング初心者がアプリ開発を目指すブログ

【Python入門】日時の操作方法- Python初心者勉強記026

今回はPythonの日時操作の方法を見ていきたいと思います。
Pythonには日時操作に関するモジュールがいくつか用意されていまので、それぞれ使い方を見ていきましょう。

datetimeクラス

日時情報は、datetimeモジュールのdatetimeクラスが保持します。

日時を生成

datetimeクラスを使って、日時オブジェクトを生成します。
datetime.datetime(年,月,日,時,分,秒,マイクロ秒)
引数の「時」 以下は省略可能で、デフォルト値は0になります。


>>> import datetime
>>> datetime.datetime(2016,9,12)
datetime.datetime(2016, 9, 12, 0, 0)
>>> datetime.datetime(2016,9,12,23,15,59,99999)
datetime.datetime(2016, 9, 12, 23, 15, 59, 99999)

日時情報を個々に取得

作成した日時オブジェクトからは、年,月,日,時,分,秒,マイクロ秒の情報を個別に取得することができます。


>>> oneday = datetime.datetime(2016,9,12,23,15,59,9999)
>>> oneday.year
2016
>>> oneday.month
9
>>> oneday.day
12
>>> oneday.hour
23
>>> oneday.minute
15
>>> oneday.second
59
>>> oneday.microsecond
9999

現在日時を取得

datetimeクラスのnowメソッドを使用すると、現在の日時の日時オブジェクトを取得することができます。

>>> datetime.datetime.now()
datetime.datetime(2016, 9, 13, 23, 20, 22, 680799)

曜日を取得

weekdayメソッドを使うと、曜日を取得することができます(0が月曜〜6が日曜)


>>> datetime.datetime.now().weekday()
1

日時の加算・減算

datetimeのtimedeltaクラスを使用すると、
days,seconds,microseconds,milliseconds,minutes,hours,weeks単位の加算・減算の計算を行うことができます。


>>> oneday = datetime.datetime(2016,9,12,23,15,59,9999)
>>> oneday+datetime.timedelta(days=1)
datetime.datetime(2016, 9, 13, 23, 15, 59, 9999)

加算・減算 演算子による差分

日時オブジェクト同士で加算・減算演算子を使用すると、日時の差分の時間を取得することができます。


>>> d1 = datetime.datetime(2016,9,12)
>>> d2 = datetime.datetime(2016,9,13)
>>> dd = d2-d1
>>> dd
datetime.timedelta(1)
>>> dd.days
1

比較演算子による比較

比較演算子を使用することで、日時の比較を行うことができます。


>>> d1 = datetime.datetime(2016,9,12)
>>> d2 = datetime.datetime(2016,9,13)
>>> d2>d1
True

日時を文字列へ変換

strfrimeメソッドを使うことで、日時を文字列として出力することができます。
ここでは、代表的な文字列の変換書式の紹介します。

%a ローケルにおける省略形の曜日名
%A ローケルにおける省略なしの曜日名
%b ローケルにおける省略形の月名
%B ローケルにおける省略なしの月名
%d 月の初めから何日目かを示す(01~31)
%H 24時間制の時を表す
%l 12時間制の時を表す
%m 月を表す(01~12)
%M 分を表す(00~59)
%p AMまたはPMを表す
%S 秒を表す(00~61)
%W 年の初めから何週目かを表す(00~53)
%Y 上2桁つきの西暦年を表す
%Z タイムゾーンの名前


>>> d1 = datetime.datetime(2016,9,12)
>>> d1.strftime('%Y/%m/%d')
'2016/09/12'

dateutilsクラス

dateutilクラスを使うことで、さらに高度な日時の操作を行うことができます。

年・月の加算

dateutils.relativedeltaモジュールを用いると、
timedeltaでできなかった年・月の加算を行うことができます。


>>> import datetime
>>> from dateutil import relativedelta #relativedeltaのimport
>>> d1 = datetime.datetime(2016,9,12)
>>> d1 + relativedelta.relativedelta(months=1)
datetime.datetime(2016, 10, 12, 0, 0)
>>> d1 + relativedelta.relativedelta(years=1)
datetime.datetime(2017, 9, 12, 0, 0)

月初・月末の取得

relativedelta関数のday引数を1にすると月初、99にすると月末が加算時得られるようなオブジェクトになります。


>>> import datetime
>>> from dateutil import relativedelta
>>> d1 = datetime.datetime(2016,9,12)
>>> d1 + relativedelta.relativedelta(day=1) #月初の取得
datetime.datetime(2016, 9, 1, 0, 0)
>>> d1 + relativedelta.relativedelta(day=99) #月末の取得
datetime.datetime(2016, 9, 30, 0, 0)
>>> d1 + relativedelta.relativedelta(months=-1,day=99) #一月前の月末
datetime.datetime(2016, 8, 31, 0, 0)

特定規格の日時文字列から日時オブジェクトの作成

dateutil.parser.parse(文字列)で
W3C Date Time FormatやRFC 822などの特定の規格の日時文字列から日時オブジェクトを作成することができます。


>>> from dateutil import parser
>>> parser.parse("2016-08-02T10:45:23.5+09:00")
datetime.datetime(2016, 8, 2, 10, 45, 23, 500000, tzinfo=tzoffset(None, 32400)

Python入門講座の次の記事はこちら => 【Python入門】例外処理の基本- Python初心者勉強記027

スポンサード リンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA