Strftime kullanarak dönemi (ÖÖ / ÖS) nasıl hesaplayabilirim?


152

Özellikle bunu basitleştiren bir kod var:

from datetime import datetime
date_string = '2009-11-29 03:17 PM'
format = '%Y-%m-%d %H:%M %p'
my_date = datetime.strptime(date_string, format)

# This prints '2009-11-29 03:17 AM'
print my_date.strftime(format)

Ne oluyor? Python, tarihleri ​​ayrıştırırken dönem belirleyiciyi yoksayar mı yoksa aptalca bir şey mi yapıyorum?

Yanıtlar:


213

Python time.strftimebelgeleri şunları söylüyor:

Strptime () işleviyle birlikte kullanıldığında, %pyönerge yalnızca saatin %Iayrıştırılması için yönerge kullanılıyorsa çıktı saati alanını etkiler .

Tabii ki, şeklinde değiştirerek %Hiçin %Io işi yapar.


2
Zaman dizeleri 0.00pm yoksa harika , ( %I1 başlar) !!
Andy Hayden

1
@AndyHayden 12:00 veya 12:00. 0 AM veya 0 PM'nin anlamlı olup olmadığından emin değilim. Sadece 24 saatlik formatta 0 saat mantıklıdır, ancak o zaman AM / PM değildir.
arun

Ayrıca yerel ayarlarınızı kontrol etmeyi unutmayın. Eğer am / pm kullanmayan bir yerel ayar kullanıyorsanız, am / pm kullanan bir yerel ayara geçmek zorunda kalacaksınız.% I ve% p kullandım ve% p yerel ayar olarak de_DE kullanılırken boş bırakıldı. En_GB olarak geçiş yapılması% p görünür kıldı.
Torsten

56
format = '%Y-%m-%d %H:%M %p'

Biçimi, %Hyerine kullanıyor %I. Yana %H"24 saatlik" biçimidir, büyük olasılıkla sadece atmadan ediyor %pbilgiler. Bu değiştirirseniz sadece para cezası çalışır %Hiçin %I.



15

% H'yi (24 saatlik bir saatte saat)% I (12 saatlik bir saatte saat) ile değiştirmeyi deneyin?

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.