Faccio un calcolo del tempo medio e vorrei visualizzare la media risultante senza microsecondi.Python timedelta remove microseconds
avg = sum(datetimes, datetime.timedelta(0))/len(datetimes)
Grazie
Faccio un calcolo del tempo medio e vorrei visualizzare la media risultante senza microsecondi.Python timedelta remove microseconds
avg = sum(datetimes, datetime.timedelta(0))/len(datetimes)
Grazie
Prendere la timedetla e rimuovere i propri microsecondi, come microsecondi e attributo di sola lettura:
avg = sum(datetimes, datetime.timedelta(0))/len(datetimes)
avg = avg - datetime.timedelta(microseconds=avg.microseconds)
È possibile rendere il proprio piccolo funzione se si tratta di una necessità ricorrente:
import datetime
def chop_microseconds(delta):
return delta - datetime.timedelta(microseconds=delta.microseconds)
Non ho trovato una soluzione migliore.
Dovrebbe essere "microsecondo", per quanto posso dire. – daviewales
dovrebbe essere 'microsecondi'. Prova [qui] (http://pastebin.com/P4qH1G51) –
È 'microsecondi' su oggetti timedelta, ma' microsecondi' su oggetti temporali e datetime. –
Se è solo per il display, questa idea funziona:
avgString = str(avg).split(".")[0]
L'idea è quella di prendere solo ciò che è prima del punto. Si tornerà 01:23:45 per 01: 23: 45,1235
un'altra opzione, dato timedetla si può fare:
avg = datetime.timedelta(seconds=math.ceil(avg.total_seconds()))
è possibile sostituire il math.ceil()
, con math.round()
o math.floor()
, dipende dalla situazione.
è possibile modificare gli elementi della datetimes in questo modo:
In [1]: datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
Out[1]: datetime.datetime(2017, 4, 28, 0, 0)
ciò che è 'datetimes' ... un elenco di timedeltas? In tal caso, la somma restituisce un oggetto timedelta che include microsecondi ... quindi qual è il problema? – tdelaney
'avg.strftime ("% Y-% m-% d% H:% M:% S ")', ma restituirà stringa. –