Pythonの日時を文字列に変換するには、日付を読みやすい形式にするにはどうすればよいですか?


171
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"

8
dt = datetime.datetime(*t[:7])

回答:


242

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

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

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

1
ばかげた質問... strftimePython 2と3の違いは何ですか?
jww

そして、もしそうなら
Xanlantos

112

これは、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

等々...


1
strftime()よりも、この場合にformat()を使用する利点は何ですか。どちらの方法でも個人的な好み以外のメリットがありますか?パフォーマンスの違いは何ですか?
Andre

2
@Andreご質問ありがとうございます!多くの場合、個人的な好みは経験によって導かれます。strftime()よりもformat()を選ぶ理由については、私の最新の回答を参照してください。パフォーマンスとPythonは、うまく合わない2つの単語です。Pythonを使用することに決めた場合は、パフォーマンスに過度に関心を持つことはありません。パフォーマンスが必要な場合は、静的に型付けされた高性能言語を使用します。
Autodidact 2014年

1
ほとんどの場合、フォーマット方法はより簡単です。比較:print 'Today is {:%B %d, %Y}'.format(datetime.now())print 'Today is {}'.format(datetime.now().strftime('%B %d, %Y')。とにかくformat()メソッドを使用している場合、日付の書式設定にも使用してみませんか?
ChaimG 2016

30

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

from datetime import datetime

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

これにより、構文エラー「SyntaxError:invalid syntax」がスローされます。詳しく説明してもらえますか?
サジド

OK。Python 3.5.1を使用しています。それが理由です。説明をありがとう。
sajid

21

非常に古い質問です。しかし、新しいpython - 3.6以降のf-stringsには新しいオプションがあります。だからここで完全性のために:

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()動作」では、フォーマット指定子の意味を説明しています。



9

Pythonのdatetimeオブジェクトにはmethod属性があり、読み取り可能な形式で出力されます。

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

これは、DateTimeを読み取り可能な形式で取得するための最良、最も簡単、最も迅速な方法の1つです。
Mujeeb Ishaque

-2

これは日付のフォーマットですか?

def format_date(day, month, year):
        # {} betekent 'plaats hier stringvoorstelling van volgend argument'
        return "{}/{}/{}".format(day, month, year)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.