问题标签 [boost-date-time]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
340 浏览

c++ - 使用 C++11 的 boost::date_time 无法编译

我最近将我的英特尔 C++ 编译器从 v13.0.1(又名 2013)升级到 v14.0.0(又名 2013 sp1)。看起来它使用的标准库已经变得更加符合 C++11。作为其中的一部分,std::locale::facet 已从:

至:

关键部分是= delete用于使其不可复制。(感谢http://www.cplusplus.com/reference/locale/locale/facet/进行并排比较。)

然而, boost/date_time/date_facet.hpp 使用这个:

这在 boost v1.48.0 和 v1.54.0(我在我的环境中安装的两个)中都没有改变。

date_facet 似乎没有声明任何复制构造函数或operator=.

在我自己的代码中,我使用它来制作类静态常量来保存时间格式。因此,在头文件中,我将其作为类定义的一部分:

在匹配的源文件中我有这个:

这段代码已经工作了多年并且没有改变。

现在,当我尝试编译时,出现此错误:

谷歌搜索没有出现其他人谈论这个问题,这让我觉得我只是在做一些愚蠢的事情。

其他人遇到过这个吗?

有人有解决方案吗?

= delete我唯一的想法是向 date_facet显式添加声明。如果可行,我会尝试并提供我自己的答案。但我真的不知道。(编辑:这个想法是失败的,所以不要尝试。)

0 投票
0 回答
1117 浏览

c++ - boost::gregorian::date_duration 从天到月以及从天到年的转换

我正在尝试计算两个 boost::gregorian 日期之间的时间。目前我只是取两个日期的差异,给我一个 date_duration 来使用:

boost::gregorian::days ctor 可以采用 date_duration,但我找不到从 date_duration 创建类似表示的方法,用于数月和数年。从我的阅读和看到的情况来看, date_duration 似乎只包含两个日期之间的间隔天数。我所希望的是它会给我非标准化的成员数年、数月和数天。例如,对于上述日期,我希望 date_duration 具有给出类似years = 5,的字段months = 65days = 1992其中每个字段表示使用该特定时间粒度的总时间量。就目前而言,似乎只有一种方法可以访问 date_duration 作为日期之间的天数(通过调用dd.days())。我错过了什么吗?有没有办法使用 boost::gregorian 或其他日期/时间库之一来实现这一点?

谢谢

0 投票
1 回答
1210 浏览

c++ - 从提升日期对象获取月份

我有一个 boost::date 对象。当我在对象上调用 month() 接口时,它会返回对象所持有的月份,但以字符串的形式返回。有没有办法获得与月份相关的数字?IE

我需要在不将 boost 对象恢复到 tm 结构的情况下得到它。这将导致太多的转换和可能对我的性能影响。

0 投票
1 回答
1312 浏览

c++ - 包含单个 boost posix_time.hpp 标头时的编译错误

我遇到了一个与 Boost 相关的看似难以理解的编译错误,我已将其简化为包含单个 boost 头文件。在编译(在 Mac OS X 10.6.8 上使用 GCC 4.2)一个只包含以下内容的空文件时:

...产生这些错误:

这些 Boost 库被用作“仅标题”——未构建。

有什么线索吗?

0 投票
1 回答
315 浏览

c++ - 来自字符串 boost::gregorian 的日期

嗨,我有两个字符串:

我希望能够返回差异,在这种情况下应该返回 3 分钟。

我的方法如下所示:

有什么办法可以得到这个时差吗?

先感谢您!

0 投票
2 回答
624 浏览

c++ - 为什么 Windows 上没有微秒分辨率的 boost::date_time?

Win32系统boost::date_time::microsec_clock()上使用 实现ftime,它只提供毫秒分辨率:链接到文档

Stackoverflow 上有一些问题/答案说明了这一点并链接了文档,但没有解释为什么会这样:

似乎有一些方法可以在 Windows 上实现微秒级分辨率:

我感兴趣的是为什么 Boost 以这种方式实现它,而反过来可能有更合适的解决方案?

0 投票
1 回答
530 浏览

c++ - 带有公历日期的 unordered_map

我想存储boost::gregorian::date为 a 的键,boost::unordered_map但我无法编译代码,因为它缺少此类的正确哈希函数。

  1. 一个简单的解决方案是转换std::string并存储它。我可能想避免这种解决方案,因为使用字符串非常昂贵。
  2. 我试图找到一些将日期导出为数字的函数,但我只能读取该day()函数,我不确定这是否真的合适。
  3. 也许我可以计算我的日期和参考日期之间的天数?

还有其他更好的方法来存储日期或将日期导出为数字的函数吗?

0 投票
0 回答
1371 浏览

c++ - 如何格式化 boost::date_time 持续时间以毫秒精度输出?

我正在寻找一种boost::posix_time::time_duration以毫秒为精度输出 a 的简洁解决方案:应该正好有 3 个小数秒数字。默认格式产生 6 个小数位(或者没有,如果它们都是 0):

使用方面和一些变通方法,我可以获得所需的输出。但是该解决方案仅禁用了我无法根据需要进行配置的日期时间库的部分,并用低级实现替换它们:

实现所需输出的推荐方法是什么?

0 投票
1 回答
740 浏览

c++ - 使用 Boost::Spirit 解析 time_period 表达式

我需要使用 Boost::Spirit 解析以下 EBNF 表达式。

例如,10.06.2014 10:00:15, 11.07.2014。我以两种方式制作了我的语法,但不能完全得到有效的例子。

1) 第一次尝试

错误:

/media/Data/Projects/Qt/Planner/parser.h:108: ошибка: no matching function for call to 'boost::gregorian::date::date(boost::phoenix::detail::make_index_composite<boost::phoenix::actor<boost::spirit::argument<0> >, int>::type)'

等等。我不能boost::spirit::argument<0>投到intor date::years_type。我尝试了date((int)_1[2]), (int)_1[1], (int)_1[0]))and dynamic_cast<int>(_1[2]),但没有成功 (.

2) 第二次尝试

错误:

/media/Data/Projects/Qt/Planner/parser.h:114: ошибка: invalid cast from type 'const _1_type {aka const boost::phoenix::actor<boost::spirit::argument<0> >}' to type 'int'...

为什么我不能将 boost::spirit::argument<0> 转换为 int????

0 投票
1 回答
843 浏览

c++ - 从时间 std::strings 提升 ptime

编辑解决方案。


这应该是一项微不足道的任务,但它花了我太长时间,我开始怀疑我的理智。

我有四个std::strings - 小时、分钟、秒和毫秒。我想ptime从他们那里得到一个。起初我想将字符串转换为数字(使用lexical_cast?)并将它们与一些虚拟日期一起插入ptime(date,time_duration)构造函数(因为我不关心它),或者甚至是今天的日期。然后我想如果我只构造一个字符串并将其转换为我的 ptime 可能会更有效,工作更少……但我不仅遇到了链接错误,我还必须获取一个gregorian::date.

在这一点上,我决定也许我想多了。一段时间后,我可能会使用这两种方法中的一种,但我觉得我正在破解一些应该更容易的东西。我是吗?

编辑


这就是我最终做的事情。它不像我想要的那样优雅,但我可以满足于它的工作。目前。