web-dev-qa-db-ja.com

Pythonのdatetimeを読みやすいフォーマットのdateを持つ文字列に変換するにはどうすればいいですか?

t = e['updated_parsed']
dt = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]
print dt
>>>2010-01-28 08:39:49.000003

どうやってそれを文字列に変えるのですか?

"January 28, 2010"
160
TIMEX

Datetimeクラスにはメソッドstrftimeがあります。 Pythonのドキュメントには、受け入れ可能なさまざまな形式が記載されています。

この特定の例では、次のようになります。

my_datetime.strftime("%B %d, %Y")
228
Cristian

Pythonの一般的な書式設定関数を使って同じことを行う方法は次のとおりです。

>>>from datetime import datetime
>>>"{:%B %d, %Y}".format(datetime.now())

ここで使用されているフォーマット文字は、 strftime で使用されているものと同じです。フォーマット指定子の先頭の:を見逃さないでください。

ほとんどの場合、strftime()の代わりにformat()を使用すると、コードが読みやすくなり、書きやすくなり、フォーマットされた出力が生成される方法と一致するようになります。

>>>"{} today's date is: {:%B %d, %Y}".format("Andre", datetime.now())

上記と次のstrftime()の選択肢を比較してください。

>>>"{} today's date is {}".format("Andre", datetime.now().strftime("%B %d, %Y"))

また、次は動作しません...

>>>datetime.now().strftime("%s %B %d, %Y" % "Andre")
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    datetime.now().strftime("%s %B %d, %Y" % "Andre")
TypeError: not enough arguments for format string

等々...

105
Autodidact

Python 3.6以降では、f文字列を使用します。

from datetime import datetime

date_string = f'{datetime.now():%Y-%m-%d %H:%M:%S%z}'
19
Natim

非常に古い質問、私は知っています。しかし、新しい f-strings (python 3.6以降)では、新しいオプションがあります。完全を期すためにここに

from datetime import datetime

dt = datetime.now()

# str.format
strg = '{:%B %d, %Y}'.format(dt)
print(strg)  # July 22, 2017

# datetime.strftime
strg = dt.strftime('%B %d, %Y')
print(strg)  # July 22, 2017

# f-strings in python >= 3.6
strg = f'{dt:%B %d, %Y}'
print(strg)  # July 22, 2017

strftime()strptime()の動作 フォーマット指定子が何を意味するのかを説明します。

16

公式文書から strfrtime を読んでください。

11
S.Lott

Pythonのdatetimeオブジェクトはmethod属性を持ち、それは読みやすいフォーマットで出力されます。

>>> a = datetime.now()
>>> a.ctime()
'Mon May 21 18:35:18 2018'
>>> 
6
SuperNova