gpt4 book ai didi

c++ - boost local_date_time 中没有 setter 方法?

转载 作者:行者123 更新时间:2023-11-30 02:28:36 25 4
gpt4 key购买 nike

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

CAVEAT If you do, make sure you account for dst/non-dst dates! The offset will vary. I'm not sure whether boost/the OS even take historical time zone changes into account.

It's probably best to use Boost DateTime's zone implementation and just do the raw conversions without the help of 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

关于c++ - boost local_date_time 中没有 setter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com