我如何舍入一個datetime像這樣的變數:
x = datetime.now()
產生這樣的東西:
2022-05-04 15:36:01.055696
像這樣的事情?
2022-05-04 15:36:01.057
uj5u.com熱心網友回復:
如果你想修改一個datetime物件,你可以四舍五入它的.microsecond屬性:
x = datetime.now()
print(x.isoformat(' '))
# 2022-05-04 15:36:01.055696
x = x.replace(microsecond=round(x.microsecond / 1000) * 1000)
print(x.isoformat(' '))
# 2022-05-04 15:36:01.056
在任何情況下(即使不修改物件并舍入微秒),要獲得您想要的表示,您可以使用適當的方法對其進行格式化:
x.isoformat(' ', timespec='milliseconds')
# 2022-05-04 15:36:01.056
請注意,使用round(x.microsecond / 1000) * 1000微秒修改物件會將它們四舍五入到最接近的毫秒。如果您只想截斷微秒,請使用x.microsecond // 1000 * 1000.
uj5u.com熱心網友回復:
如果您只想洗掉最后幾個字符,您可以這樣做:
print(x.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])
格式 str 是您在輸出中看到的默認值
uj5u.com熱心網友回復:
您可以將其轉換為 unix 時間戳,然后將數字四舍五入到小數點后 3 位。
from datetime import datetime
x = '2022-05-04 15:36:01.055696'
# Convert to datetime object
d = datetime.strptime(x, '%Y-%m-%d %H:%M:%S.%f')
# Convert to rounded unix timestamp
ts = datetime.fromtimestamp(round(d.timestamp(), 3))
# You know have rounded datetime object, you can convert back to string with
ts.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
uj5u.com熱心網友回復:
Pandas 時間戳對此有一個內置功能。使時間戳成為時間戳物件,然后使用round。
import pandas as pd
x = '2022-05-04 15:36:01.055696'
ts = pd.Timestamp(x)
ts_rounded = ts.round(freq='L')
print(ts_rounded) 2022-05-04 15:36:01.056000
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472630.html
