Pythonで日付を書式を指定して文字列に変換する

日付や時刻(datetimeオブジェクト)をprintメソッドなどで出力させると、マイクロ秒が0のときに省略されたりします。それでは困りますので、書式を決めて文字列に変換してみます。

逆に、日付や時刻の文字列からdatetimeオブジェクトを作る方法は、 別の投稿 を参照してください。

目次

  1. datetimeオブジェクトを文字列に変換する方法
  2. 変換実施例

datetimeオブジェクトを文字列に変換する方法

datetimeオブジェクト(dateオブジェクト、timeオブジェクト)のstrftimeメソッドは、日付や時刻のオブジェクトを文字列に変換します。その際、書式を指定できます。

S = datetime.datetime.strftime(D, f)
S = datetime.date.strftime(D, f)
S = datetime.time.strftime(D, f)
変数 内容
D datetimeオブジェクト
f 変換する書式を示す文字列
S 変換結果の文字列

1つめのdatetimeはモジュールを示すものです。

書式を指定する文字列に使われる主な文字です。

書式 内容
%Y 年(0000~9999)
%y 年(00~99)
%m 月(01~12)
%d 日にち(01~31)
%H 時(00~12)
%M 分(00~59)
%S 秒(00~59)
%f マイクロ秒(000000~999999)

変換実施例

試してみましょう。

>>> import datetime

>>> D = datetime.datetime(year=2018,month=2,day=3,hour=4,minute=5,second=6,microsecond=000000)
>>> D
datetime.datetime(2018, 2, 3, 4, 5, 6)
>>> print(D)
2018-02-03 04:05:06

>>> S = datetime.datetime.strftime(D, '%Y-%m-%d %H:%M:%S.%f')
>>> S
'2018-02-03 04:05:06.000000'
>>> print(S)
2018-02-03 04:05:06.000000

マイクロ秒が0のときに、datetimeオブジェクトをprintメソッドでそのまま出力すると0マイクロ秒が省略されてますが、書式を指定すると、マイクロ秒が0の場合でも0として出力されますね。

広告

Pythonの日付/時刻処理カテゴリの投稿