2012-03-22 22 views
10
>>> a = str(datetime.now()) 
>>> a 
'2012-03-22 11:16:11.343000' 

Böyle bir dize almam gerekiyor: '16:11.34'.nasıl dk, saniye ve milisaniye DateTime.Now dan() python alınır?

Mümkün olduğunca kompakt olmalıdır.

Veya bunun yerine time() kullanmalı mıyım? Nasıl alabilirim?

+0

Yani, 16: 11.34' veya başka bir şey olarak kesilmesini mi istiyorsunuz? –

+0

Evet, trankat veya foramt veya ayrıştırma. Bilmiyorum. Ben denemek için bilmiyorum çünkü – Prostak

+1

@Marcin, ben anythong denemedim. – Prostak

cevap

21

hakkında ne:

datetime.now().strftime('%M:%S.%f')[:-4]

sana "Milisaniye sadece 2 basamak" ile ne demek emin değilim ama bu 2 ondalık basamağa tutmak gerekir. Strftime format dizgesini hassasiyeti azaltmak için manipüle ederek daha zarif bir yol olabilir - Tamamen emin değilim.

DÜZENLEME

%f değiştirici sizin için işe yaramazsa, gibi bir şey deneyebilirsiniz: Yine, sadece hassas kesilmesini istediğiniz farz ediyorum

now=datetime.now() 
string_i_want=('%02d:%02d.%d'%(now.minute,now.second,now.microsecond))[:-4] 

.

+0

'>>> datetime.now(). Strftime ('% M:% S.% f ') [: - 4]' Sonuç: '' Bir şey doğru değil. – Prostak

+0

'[: -4]' "başında başlar ve son 4 karakterleri çıkarmak" anlamına gelir. Bazı sebeplerden dolayı, '% f' burada çalışmıyor ve nihai sonucudur' 36 geçerli: ': 31.f' kesildi 36' etmek. @Prostak da kesilmiş bir sonuç alıyor olabilir ... – Izkata

+2

Hata nedir? Hata mı veriyor? Eğer piton hangi sürümünü kullanıyorsunuz - I (ben pozitif değilim rağmen)% f değiştirici piton 2.6 ilave edildi düşünüyorsun? – mgilson

1

Başka bir benzer çözüm:

>>> a=datetime.now() 
>>> "%s:%s.%s" % (a.hour, a.minute, a.microsecond) 
'14:28.971209' 

Evet, ben dize mükemmel biçimlendirme alamadım biliyorum.

+0

method 'strftime()' .... milisaniye 'datetime.now() parametresi için sadece bir parametre bulamıyorum. Strftime ('% M:% S. ??')'. belki biliyorsundur? – Prostak

+0

Tamsayı değerleri (** d ** igits) ile uğraştığınız için '% s' yerine'% d' kullanırım. – NuclearPeon

2

Bu çözüm @ gdw2 tarafından sağlanana çok benzer, dize biçimlendirme doğru ne için sorulan maç için yapılır sadece o - "mümkün olduğunca kompakt olmalı"

>>> import datetime 
>>> a = datetime.datetime.now() 
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2]) 
'31:45.57' 
+0

method 'strftime()' .... milisaniye 'datetime.now() parametresi için sadece bir parametre bulamıyorum. Strftime ('% M:% S. ??')'. belki biliyorsundur? – Prostak

+0

Eğer strftime kullanacaksanız, o zaman Mgilson'un çözümü yapmanız gereken şey gibi görünüyor: datetime.datetime.now(). Strftime ("% M:% S.% f") [: - 4] '>>> ithalat datetime için >>> datetime.datetime.now(). Strftime ("% M:% S.% f ") [- - 4] ' 14: 07.90 ' – Pythomania

+0

% f, 2.4 – Prostak

0

time.second yardımcı olur Bunu python'unuzun üstüne koy.

0

Eski bir iş parçacığı açtığım için üzgünüm, ancak birisinin yardımcı olması durumunda hemen gönderiyorum. Bu, bir numara sadece bir int ör olarak dökme gibi değerleri gerekiyorsa Python 3.

from datetime import datetime 

Date = str(datetime.now())[:10] 
Hour = str(datetime.now())[11:13] 
Minute = str(datetime.now())[14:16] 
Second = str(datetime.now())[17:19] 
Millisecond = str(datetime.now())[20:] 

bunu yapmanın en kolay yolu gibi görünüyor

Hour = int(str(datetime.now())[11:13]) 
1
import datetime from datetime 

now = datetime.now() 

print "%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.second) 

bunu yapabilirsiniz Aynı gün & vb ile aynı

İlgili konular