2009-12-05 30 views
11

¿Cuál es la mejor forma de manejar partes de un segundo en Python? La biblioteca de fecha y hora es excelente, pero por lo que yo sé, no puede manejar ninguna unidad en menos de un segundo.fracción de segundos de Python

+2

¿Para qué estás usando los segundos? ¿Qué es lo que quieres hacer con los segundos? –

Respuesta

18

En el módulo de fecha y hora, la fecha y hora, la hora y clases timedelta todos tienen la resolución más pequeña de microsegundos:

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

si desea mostrar una fecha y hora con fracciones de segundo, basta con insertar un punto decimal y la tira de ceros a la derecha:

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

las clases de fecha y hora solo aceptan entrada entera y las horas, minutos y segundos deben estar entre 0 y 59 y los microsegundos deben estar entre 0 y 999999. La clase timedelta, sin embargo, aceptará valores de coma flotante con fracciones y todo el módulo aritmético adecuado para usted:

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

los componentes básicos de timedelta son días, segundo y microsegundo (0, 3662, 567000 arriba), pero el constructor también aceptará milisegundos, horas y semanas. Todas las entradas pueden ser enteros o flotantes (positivos o negativos). Todos los argumentos se convierten a las unidades de base y luego normalizaron de manera que 0 < = segundos < 60 y 0 < = microsegundos < 1000000.

puede añadir o restar el lapso a una instancia de fecha y hora o el tiempo o a otro tramo. Juega con él, probablemente puedas crear algunas funciones o clases para hacer exactamente lo que quieras. Probablemente pueda hacer todo su procesamiento de fecha/hora usando instancias timedelta relativas a cierta fecha y hora fija, digamos basetime = datetime(2000,1,1,0,0,0), luego convierta a una instancia de fecha y hora para su visualización o almacenamiento.

+0

Gracias, eso es exactamente lo que necesitaba. – TimothyAWiseman

+0

@timothy: De nada, me alegro de poder ayudar. Si esta es su respuesta aceptada, agradecería un cheque. Gracias. –

0

¿Para qué? import time -> time.clock() devuelve la hora actual en milisegundos, por lo que se puede utilizar para cronometrar con una precisión de milisegundos.

4

para obtener una mejor respuesta tendrá que especifique su pregunta más, pero esto se debe mostrar al menos la forma en datetime can handle microseconds:

>>> from datetime import datetime 
>>> t=datetime.now() 
>>> t.microsecond 
519943 
Cuestiones relacionadas