Tôi tính toán thời gian trung bình và tôi muốn hiển thị trung bình kết quả mà không có micro giây.Python timedelta loại bỏ micro giây
avg = sum(datetimes, datetime.timedelta(0))/len(datetimes)
Cảm ơn
Tôi tính toán thời gian trung bình và tôi muốn hiển thị trung bình kết quả mà không có micro giây.Python timedelta loại bỏ micro giây
avg = sum(datetimes, datetime.timedelta(0))/len(datetimes)
Cảm ơn
Lấy timedetla và loại bỏ micro riêng của mình, như micro và read-only thuộc tính:
avg = sum(datetimes, datetime.timedelta(0))/len(datetimes)
avg = avg - datetime.timedelta(microseconds=avg.microseconds)
Bạn có thể thực hiện chức năng nhỏ của riêng của bạn nếu nó là một nhu cầu lặp đi lặp lại:
import datetime
def chop_microseconds(delta):
return delta - datetime.timedelta(microseconds=delta.microseconds)
Tôi chưa tìm được giải pháp tốt hơn.
Nó phải là 'micro giây', theo như tôi có thể nói. – daviewales
phải là 'micro giây'. Bằng chứng [ở đây] (http://pastebin.com/P4qH1G51) –
Nó là 'micro giây' trên các đối tượng timedelta, nhưng 'micro giây' về các đối tượng thời gian và ngày giờ. –
Nếu đó là chỉ dành riêng cho màn hình, ý tưởng này hoạt động:
avgString = str(avg).split(".")[0]
Ý tưởng là để chỉ lấy những gì là trước khi các điểm. Nó sẽ trở lại 01:23:45 cho 01: 23: 45,1235
tùy chọn khác, được đưa ra timedetla bạn có thể làm:
avg = datetime.timedelta(seconds=math.ceil(avg.total_seconds()))
Bạn có thể thay thế các math.ceil()
, với math.round()
hoặc math.floor()
, tuỳ thuộc vào tình hình.
Bạn có thể thay đổi các yếu tố của datetimes như vậy:
In [1]: datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
Out[1]: datetime.datetime(2017, 4, 28, 0, 0)
'datetimes' ... là gì một danh sách các timedeltas? Nếu vậy, số tiền trả về một đối tượng timedelta bao gồm micro giây ... vậy vấn đề là gì? – tdelaney
'avg.strftime ("% Y-% m-% d% H:% M:% S ")', nhưng nó sẽ trả về chuỗi. –