茨城県つくば市でモバイルアプリ(iPhone、Android)のプログラミングをする日記です。あとWordPress、Raspberry Pi、Arduinoなど。

モバイルアプリ開発@つくば

Pythonのdatetimeモジュールを使って日付と時刻を操作する

投稿日:2015年7月29日 更新日:

本記事では、Python 2.7を使っています。
執筆から時間が経っており、情報が古い可能性があります。

こんにちは、okuzawatsです。

この記事では、Pythonを使った日付と時刻の操作について書いていきます。

Pythonのdatetimeモジュール

Pythonのdatetimeモジュールを使って、日付と時刻を操作する方法をメモしておきます。

Pythonには、datetimeモジュールの他にも"time"モジュールという日時を扱うモジュールがあります。
日時の操作には通常"datetime"モジュールを使います。

モジュールのインポート

"datetime"モジュールをインポートするためのおまじないです。

import datetime

datetime.dateクラス

"datetime.date"クラスに用意されている"today()"メソッドを使うと、その日の日付が取得できます。
"datetime.date"型のオブジェクトです。

d1 = datetime.date.today()
print d1, type(d1)

実行結果:

2015-07-29 <type 'datetime.date'>

引数に年月日を渡すことで、日付を指定することができます。

d2 = datetime.date(2015, 8, 31)
print d2, type(d2)

実行結果:

2015-08-31 <type 'datetime.date'>

datetime.dateオブジェクトの演算

"datetime.date"型のオブジェクト間の演算です。
演算結果は、"datetime.timedelta"型のオブジェクトになります。

d3 = d2 - d1
print d3, type(d3)

実行結果:

33 days, 0:00:00 <type 'datetime.timedelta'>

"datetime.timedelta"型のオブジェクトを整形する方法が見当たらなかったので、強引に処理してみました。
スマートな方法があれば、誰か教えてください。
実際にはもう少しきちんと処理する必要があると思います。

d4 = str(d3)
print '夏休みは残り' + d4.split()[0] + '日です。'

実行結果:

夏休みは残り33日です。

datetime.dateオブジェクトの比較

"datetime.date"型のオブジェクト間の比較です。
比較演算子を使って値の比較ができます。

if d1 < d2:
print '夏休みは終わってません。'
elif d1 == d2:
print '夏休み最終日です。'
else:
print '夏休みは終わりました。'

出力結果:

夏休みは終わってません。

datetime.dateオブジェクトの整形

"datetime.date"オブジェクトを整形するには、"strftime()"メソッドを使います。
引数にフォーマット文字列を渡すと、文字列として出力されます。

d1f = d1.strftime("%Y年%m月%d日")
print d1f, type(d1f)

出力結果:

2015年07月29日 <type 'str'>
d2f = d2.strftime("%Y%m%d")
print d2f, type(d2f)

出力結果:

20150831 <type 'str'>

曜日の取得

曜日を取得するには、"weekday()"メソッド、または"isoweekday()"メソッドを使います。
"weekday()"メソッドでは、0〜6の整数が返ってきます。
それぞれの整数が月曜日から日曜日に対応します。
一方、"isoweekday()"メソッドでは、これが1〜7の整数になっています。
(同じようなメソッドがふたつあるのは、何故でしょうか?)

print d1.weekday()

実行結果:

2
print d1.isoweekday()

実行結果:

3

返り値を使って配列にアクセスすると便利でしょうか。

w = ['月曜日','火曜日','水曜日','木曜日','金曜日','土曜日','日曜日']
print '本日は' + w[d1.weekday()] + 'です。'

実行結果:

本日は水曜日です。

datetime.datetimeクラス

"datetime.datetime"クラスは、日付だけでなく時刻も扱います。
"now()"メソッドで現在時刻を取得できます。あとの使い方は"datetime.date"クラスとだいたい同じです。

t1 = datetime.datetime.now()
print t1, type(t1)

出力結果:

2015-07-29 13:14:51.093103 <type 'datetime.datetime'>
t2 = datetime.datetime(2015, 8, 31, 23, 59, 00)
print t2, type(t2)

出力結果:

2015-08-31 23:59:00 <type 'datetime.datetime'>
t3 = t2 - t1
print t3, type(t3)

出力結果:

33 days, 10:44:08.906897 <type 'datetime.timedelta'>
t4 = str(t3)
print '夏休みは残り' + t4.split()[0] + '日と' + t4.split()[2].split(':')[0] + '時間と' + t4.split()[2].split(':')[1] + '分と' + t4.split()[2].split(':')[2].split('.')[0] + '秒です。'

出力結果:

夏休みは残り33日と10時間と44分と08秒です。

まとめ

この記事では、Pythonのdatetimeモジュールを使って日時を操作する方法についてまとめました。

-プログラミング

Copyright© モバイルアプリ開発@つくば , 2017 AllRights Reserved Powered by AFFINGER4.