我正在使用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