2009-12-05 17 views
11

Jaki jest najlepszy sposób na poradzenie sobie z częściami sekundy w Pythonie? Biblioteka datetime jest doskonała, ale z tego co wiem, nie może obsłużyć żadnej jednostki mniej niż sekundę.Python ułamek sekund

+2

Do czego używasz sekund? Co chcesz zrobić z sekundami? –

Odpowiedz

18

W module datetime, datetime, czas i wszyscy mają zajęcia timedelta najmniejsza rozdzielczość mikrosekund:

>>> from datetime import datetime, timedelta 
>>> now = datetime.now() 
>>> now 
datetime.datetime(2009, 12, 4, 23, 3, 27, 343000) 
>>> now.microsecond 
343000 

jeśli chcesz wyświetlić datetime z ułamków sekund, po prostu wstawić kropkę dziesiętną i rozebrać zera kończące:

>>> now.strftime("%Y-%m-%d %H:%M:%S.%f").rstrip('0') 
'2009-12-04 23:03:27.343' 

klasy datetime i godziny przyjmują tylko całkowite dane wejściowe, a godziny, minuty i sekundy muszą należeć do zakresu od 0 do 59, a mikrosekundy muszą należeć do zakresu od 0 do 999999. Jednak klasa timedelta będzie przyjmować wartości zmiennoprzecinkowe z ułamkami i robić wszystkie właściwe arytmetyka modulo dla Ciebie:

>>> span = timedelta(seconds=3662.567) 
>>> span 
datetime.timedelta(0, 3662, 567000) 

podstawowymi składnikami timedelta są dni, sekund i mikrosekund (0, 3662, 567000 powyżej), ale konstruktor będzie również akceptować milisekundach godziny i tygodnie. Wszystkie dane wejściowe mogą być liczbami całkowitymi lub zmiennymi (dodatnimi lub ujemnymi). Wszystkie argumenty są przekształcane w stacje bazowe i znormalizowane tak, że 0 < = sekundy < 60 i 0 < = mikrosekund < 1000000.

można dodać albo odjąć Span datetime lub czasu np lub innego zakresu. Ośmieszaj się z tym, możesz prawdopodobnie łatwo wymyślić jakieś funkcje lub klasy, aby zrobić z zewnątrz to, co chcesz. Prawdopodobnie można wykonać wszystkie operacje przetwarzania daty/czasu za pomocą instancji timedelta w odniesieniu do niektórych stałych datetime, na przykład basetime = datetime(2000,1,1,0,0,0), a następnie przekonwertować je na instancję datetime lub czas wyświetlania lub przechowywania.

+0

Dzięki, to jest dokładnie to, czego potrzebowałem. – TimothyAWiseman

+0

@timothy: Nie ma za co, cieszę się, że mogłem pomóc. Jeśli jest to zaakceptowana odpowiedź, byłbym wdzięczny za czek. Dzięki. –

0

W jakim celu? czas importu -> time.clock() zwraca aktualny czas w milisekundach, dzięki czemu można go wykorzystać do pomiaru czasu z dokładnością do milisekund.

4

Aby uzyskać lepszą odpowiedź będziesz musiał podać swoje pytanie dalej, ale to powinno pokazać przynajmniej jak datetime can handle microseconds:

>>> from datetime import datetime 
>>> t=datetime.now() 
>>> t.microsecond 
519943 
Powiązane problemy