2012-02-24 24 views
11

Paypal API'sini kullanıyorum ve aşağıdaki biçimde bir zaman damgası alıyorum. Bu strptime kullanarak bir datetime nesnesine bu ayrıştırmak çalışıyorum, ama aşağıdaki hatayı alıyorum: bunun için kasada bir işlev Bu format oldukça standart biçim olması gerekiyordu olarak, aynı zamandautc saat dizgesini datetime nesnesine dönüştürme

(Pdb) datetime.strptime('2012-03-01T10:00:00Z','%Y-%M-%dT%H:%M:%SZ') 
*** error: redefinition of group name 'M' as group 5; was group 2 

yok?

DÜZENLEME:

Tamam bir yazım hatası gibi görünüyor. İlk% M olmalıdır% m

cevap

7

%M (dakika) ve %m (ay) karıştırıyor gibi görünüyor.

2

Sorun, iki kez %M kullanmanızdır. Aylar için %m'u kullanın:

>>> datetime.strptime('2012-03-01T10:00:00Z','%Y-%m-%dT%H:%M:%SZ') 
datetime.datetime(2012, 3, 1, 10, 0) 
+0

güzel standart piton tarihini geri alırsınız? Burada datetime kullanmak için doğru mu? Bu hem tarih hem de zaman olduğundan. –

+0

@arno_v: Gördüğünüz gibi, 'datetime.strptime' sınıf yöntemini kullanıyorsunuz. Bunun için üzgünüm. –

2

Yazım hatası var. %M iki kez kullanılır. Ay için %m'u kullanmanız gerekiyordu. docs Gönderen:

%m Month as a decimal number [01,12]. 
%M Minute as a decimal number [00,59]. 
21

dateutil gelen ayrıştırıcı arkadaşın.

Sen dateutil yüklemek pip gerekecek ama tarih dönüşüm kodu çanta ve torbalar kaydettik:

pip install python-dateutil 

Böyle kullanabilirsiniz.

from dateutil import parser 
ds = '2012-03-01T10:00:00Z' # or any date sting of differing formats. 
date = parser.parse(ds) 

Sen bu ayrıştırıcı ile hemen hemen herhangi bir tarih dizesi biçimleriyle başa çıkabilirim bulacaksınız ve zaman kullanmalıyım Neden

+0

Ah teşekkürler! Bu projede dateutil kullandığım için, bunu yapmanın en zarif yolu görünüyor. –

+0

Lütfen oy verin ve bunu fav cevabınıza çevirin, lütfen @arno_v –

İlgili konular