1. 現在日時
  2. 指定した日時を求める
  3. 文字列から日時情報を取り出す

Pythonで日時処理を行いたい場合、標準ライブラリのdatetimeモジュールが使用できます。

datetimeモジュールは、インポートの指定が必要になりますので、プログラムの先頭に以下が必要となります。

import datetime

参考

現在日時

現在の日時は、datetimeオブジェクトのnowメソッドか、todayメソッドで取得できます。

now = datetime.datetime.now()
print(now)   #=> '2018-11-04 17:59:50.263715'

today = datetime.datetime.today()
print(now)   #=> '2018-11-04 17:59:50.263715'

  • Unixタイムスタンプを求める

  • timestampメソッドでUnixタイムを求められますが、得られるのはfloat型になります。

    now = datetime.datetime.now()
    utime = now.timestamp()
    print(utime)   #=> 1541322721.386434

    int型にする場合、組み込み関数intを使います。

    now = datetime.datetime.now()
    utime = int(now.timestamp())
    print(utime)   #=> 1541322721

指定した日時を求める

  • Unixタイムスタンプを求める

  • 日時の文字列からUnixタイムスタンプを求める場合、strptimeを使う方法があります。 ただし、strptimeメソッドは、datetime.datetimeオブジェクトを返すので、さらにtimestampメソッドを使ってUnixタイムスタンプを求めます。

    dt = datetime.datetime.strptime('2018-09-18', '%Y-%m-%d')
    utime = dt.timestamp()    #=> 1537974000.0 

  • 文字列を求める

  • 日時の文字列(ユーザーが選択した日付など)を別フォーマットに変換する場合、まずdatetime.strptimeで指定文字列の日時のdatetimeオブジェクトを作成します。 datetimeオブジェクトが得られたら、strftimeメソッドで求める文字列にします。

    例 '年/月/日' から '年-月-日'の文字列に変換する場合
    dt = datetime.datetime.strptime('2018/9/5', '%Y-%m-%d')
    str = dt.strftime('%Y-%m-%d')   #=> '2018-09-05'

    例 '年/月/日 時:分:秒' から '年-月-日 時:分:秒'の文字列に変換する場合
    dt = datetime.datetime.strptime('2018/09/18 23:45:30', '%Y/%m/%d %H:%M:%S')
    str = dt.strftime('%Y-%m-%d %H:%M:%S')   #=> '2018-09-18 23:45:30'

文字列から日時情報を取り出す

日時を表す文字列から日時情報を取り出す場合、まず文字列からdatetimeオブジェクトを求めて、それから目的の日時情報を取り出す方法があります。

  • datetime.strptime

  • 日時を表す文字列からdatetimeオブジェクトを求める場合、datetime.strptimeを使う方法があります。 strptimeで指定できる書式の詳細は以下にあります。

    年月日の例です。月や日が1桁の場合、2桁目に0があっても無くても正常に処理してくれます。

    str = '2018/09/4'
    dt = datetime.datetime.strptime(str, '%Y/%m/%d')

    例 年月日と時分秒の場合

    str = '2018/9/07 23:45:5'
    dt = datetime.datetime.strptime(str, '%Y/%m/%d %H:%M:%S')