在boost local_date_time中没有setter方法
No setter method in boost local_date_time?
我正在使用boost date_time库在我的应用程序中开发一个过滤方案。假设我有10000条记录,每条记录都包含一个时间戳(UTC单位为毫秒)。我想使用boost将此时间戳转换为给定的时区,然后以毫秒为单位返回时间部分。我使用以下代码片段:
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);
但是我找不到这样的东西。有人知道这样的东西存在吗?
"因此,在每次迭代时创建一个local_date_time对象是很浪费的"
你看过发出的程序集吗?我认为你在过早地优化。
ptime的思想是"不可变的值类型"。local_date_time也是如此。这里的复杂因素是库设计人员对具有共享所有权的时区实例进行了建模(有充分的理由)。
这实际上是你唯一应该担心的部分。我会提前计算一次时区偏移量,然后完全放弃local_date_time。
另一种避免复杂性的方法是考虑使用警告如果您这样做,请确保您考虑dst/非dst日期!补偿会有所不同。我不确定boost/OS是否考虑了历史时区的变化。
最好使用Boost DateTime的区域实现,只进行原始转换,而不使用local_date_time
-
boost::date_time::c_local_adjustor<ptime>
-
boost::date_time::local_adjustor<ptime>
看到http://www.boost.org/doc/libs/1_62_0/doc/html/date_time/examples.html date_time.examples.local_utc_conversion
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 为什么我的 setter 方法会产生错误的访问错误
- 在不编写显式 setter 的情况下修改私有类数据成员的便捷方法是什么?模板有用吗?
- 枚举器 C++ 的 setter 和 getter 方法
- 如何在 setter 方法中设置 boost::optional 成员变量的值?
- 在Thrift中,有没有一种方法可以避免生成C++setter
- getter和setter方法的用途是什么
- 当setter方法参数是C++中的引用时会发生什么
- 除了 setter 和 getter 之外的任何其他方法,它们将执行相同的功能但更好
- C++中的getter/setter是正确的方法
- 我应该如何处理只能由工厂类使用的setter方法
- Setter不在类方法内部工作
- 在boost local_date_time中没有setter方法
- 强制类方法使用自己私有成员的setter/getter
- 如何重构冗余的getter/setter方法
- Will编译器会在setter方法中自动应用move语义
- 如何在gtest中测试setter方法
- c++中getter和setter方法的包装器
- 运算符重载 - 在 char 数组包装类中实现 C++ setter 的正确方法是什么