我正在使用boost date_time庫在我的應用程序中開發過濾方案。假設我有10000條記錄,每條記錄都包含一個時間戳(以毫秒爲單位)。我想使用boost將此時間戳轉換爲給定的時區,然後以毫秒爲單位返回時間部分。我使用下面的代碼片斷:boost local_date_time中沒有setter方法?
local_date_time localDate(pt, tz_ptr);
return localDate.local_time().time_of_day().total_milliseconds();
在此代碼,PT是從時間戳產生(毫秒)一個的ptime對象。所有10000條記錄的時區指針都是不變的。因此,在每次迭代中創建一個local_date_time對象是浪費的。如果可能的話,我想重用這個對象。我正在尋找一種方法,如:
localDate.set(ptime pt);
但我找不到這樣的東西。任何人都知道這樣的事情是否存在?
我認爲這裏的代碼可能太少,可能對您有幫助,但是如果我理解正確,您希望返回'localDate.local_time()。time_of_day()。total_milliseconds()',但爲了做到這一點需要從'pt'(這是常量)生成'localDate'。爲什麼'localDate'不是一個類的成員,並且在構造它時會從毫秒初始化'pt'並將它傳遞給'localDate',那麼函數可以返回成員? – Tas
似乎沒有像上面這樣的方法。你的過濾器如何工作?也許這會更容易轉換查詢時間,而不是存儲的數據? –
@Tas:對不起,如果不是很清楚。每條記錄都有一個UTC時間戳。我需要轉換爲給定的時區。爲了做到這一點,我基本上必須在循環的每次迭代中創建一個local_date_time對象並返回時間部分。我的問題是我是否可以創建一個local_date_time對象。在循環的每次迭代中,我應該將時間戳設置爲ptime到local_date_time,並在適當的時區對其進行轉換。問題是我沒有找到local_date_time的setter方法。 – ToyElephant