2010-09-03 19 views

cevap

22
import time 
now = time.time() 
... 
later = time.time() 
difference = int(later - now) 
+1

Bu, bir "TypeError: int() argümanı, bir dize, bayt benzeri bir nesne veya Python3'teki" datetime.timedelta "hatası değil, bir sayı olmalıdır. Robert Longson'un cevabına bakınız. – typoerrpr

2

, bir kayan noktalı sayı olarak Epoch'tan beri saniye döndüren time.time() fonksiyonunu kullanabilir.

+0

cool, güzel bir şekilde yazdırmak için saniye cinsinden kayan noktaya sahip bir datetime nesnesi nasıl oluşturabilirim? – Richard

+0

Zaman farkı ya da mutlak zamandan mı bahsediyorsunuz? İkincisi, time.localtime() 'veya' time.gmtime() 'ile zaman struct'ine (yıl, ay vb. Alanlarla) zaman yapısına (time, time vb.) Dönüştürülebilir ve sonra time.asctime ile string'e dönüştürülebilir (/ '' time.strftime() 'veya datetime.datetime' nesnesini oluşturmak için kullanılır. Python standart kütüphanesinde, zaman farkını güzel bir şekilde bozmak/yazdırmak için herhangi bir işlev olup olmadığından emin değilim (ancak bu mutlak zamanın doğru temsilinden çok daha kolay bir görevdir). – rkhayrov

6

Toplam _seconds yöntemi, herhangi bir kesirli kısım da dahil olmak üzere farkı döndürür.

from datetime import datetime 
now = datetime.now() 
... 
later = datetime.now() 
difference = (later - now).total_seconds() 

Sen int() size cevap vermelidir yeterli çarpanlarıyla timedelta başlığın açısından yukarı ekleme

+1

"AttributeError:" float 'nesnesinin "total_seconds" özelliğine sahip değilim –

2

istiyorsanız üzerinden bir tam sayıya o dönüştürebilirsiniz. diff.days*24*60*60 + difference.seconds

from datetime import datetime 
now = datetime.now() 
... 
later = datetime.now() 
diff = later-now 
diff_in_seconds = diff.days*24*60*60 + diff.seconds 

değişken 'fark' burada https://docs.python.org/2.4/lib/datetime-timedelta.html ayrıntılı olarak açıklandığı gibi (gün, saniye mikrosaniye) bir demet bir timedelta amacıdır. Diğer tüm birimler (saat, dakika ..) bu formata dönüştürülür.

>> diff = later- now 
>> diff 
datetime.timedelta(0, 8526, 689000) 
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds 
>> diff_in_seconds 
>> 8527 

, bunun yerine (daha önce-şimdi) negatif zaman farkı varsa yerine sonradan-şimdi (dolayısıyla pozitif zaman farkı) olurdu az ikisi arasında geçen süre olduğu, bakmak için bir başka yolu önceki örnekte Dolayısıyla

>> diff = earlier-now 
>> diff 
datetime.timedelta(-1, 77873, 311000) 
>> diff_in_seconds = diff.days*24*60*60 + diff.seconds 
>> diff_in_seconds 
>> -8527 

gibi hala aynı, biz eminiz bile süresi buna durumunda önemli bir terim olduğu için dikkate gün vadeli almak, gerekli 1 günden az olduğu negatif zaman farkı.

İlgili konular