Python tarih saatini okunabilir biçim tarihi olan bir dizeye nasıl dönüştürebilirim?


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

Bunu bir dizgeye nasıl dönüştürebilirim ?:

"January 28, 2010"

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

Yanıtlar:


242

Datetime sınıfı bir strftime yöntemine sahiptir. Python belgeleri kabul ettiği farklı formatları belgeler:

Bu özel örnek için şöyle görünecektir:

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

1
Aptalca bir soru ... strftimePython 2 ve 3 arasındaki farklar neler?
jww

Ve eğer bir şekilde
Xanlantos

112

Python'un genel biçimlendirme işlevini kullanarak bunu nasıl başarabilirsiniz ...

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

Burada kullanılan biçimlendirme karakterleri, strftime tarafından kullanılanlarla aynıdır . : Biçim belirleyicisindeki öncüyü kaçırmayın .

Çoğu durumda strftime () yerine format () kullanmak, kodu daha okunabilir, daha kolay yazılabilir ve biçimlendirilmiş çıktının oluşturulma biçimiyle tutarlı hale getirebilir ...

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

Yukarıdakileri aşağıdaki strftime () alternatifiyle karşılaştırın ...

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

Dahası, aşağıdakiler işe yaramayacak ...

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

Ve bunun gibi...


1
Ben strftime (), bu durumda format () kullanmanın yararları neler olduğunu merak ediyordum. Her iki yöntem de kişisel tercih dışında bir fayda sağlıyor mu? Performans farkları nelerdir?
Andre

2
@Andre Sorunuz için teşekkürler! Kişisel tercihler genellikle deneyim tarafından yönlendirilir. Lütfen strftime () yerine format () 'ı tercih ettiğim için güncellenmiş cevabıma bakın. Performans ve Python birlikte iyi gitmeyen iki kelimedir. Python kullanmaya karar verirsem performansla fazla ilgilenmiyorum. Performansa ihtiyacım olduğunda statik olarak yazılan yüksek performanslı bir dil kullanıyorum.
Autodidact

1
Biçim yöntemi çoğu durumda daha basittir. Karşılaştır: print 'Today is {:%B %d, %Y}'.format(datetime.now())ile print 'Today is {}'.format(datetime.now().strftime('%B %d, %Y'). Biçim () yöntemini yine de kullanırken, neden tarih biçimlendirmesi için de kullanmıyorsunuz?
ChaimG

30

Python 3.6 ve sonraki sürümlerinde f-dizeleri kullanma.

from datetime import datetime

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

Bu sözdizimi hatasını atar: "Sözdizimi Hatası: geçersiz sözdizimi". Lütfen biraz açıklayabilir misiniz?
sajid

Tamam. Python 3.5.1 sürümüne sahibim. Bu yüzden. Açıklama için teşekkürler.
Sajid

21

çok eski bir soru, biliyorum. ancak yeni f-dizeleriyle (python 3.6'dan başlayarak) yeni seçenekler var. tamlık için burada:

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()ve strptime()Davranış biçim belirteçlerinin ne anlama geldiğini açıklar.



10

Python datetime nesnesi, okunabilir biçimde yazdırılan bir yöntem özelliğine sahiptir.

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

Bu, DateTime'ı okunabilir bir biçimde almanın en iyi, en kolay ve en hızlı yollarından biridir.
Mujeeb Ishaque

-2

Bu tarih formatı için mi?

def format_date(day, month, year):
        # {} betekent 'plaats hier stringvoorstelling van volgend argument'
        return "{}/{}/{}".format(day, month, year)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.