将字符串转换为boost :: gregorian :: greg_month

时间:2012-02-24 13:44:44

标签: c++ boost-date-time

在Boost日期时间库中,是否有一个实用函数用于将月短字符串(例如Jan,Feb,Mar,Apr)转换为boost :: gregorian :: greg_month类型?该库的文档不是很好,我在标题中看不到任何内容。

2 个答案:

答案 0 :(得分:1)

一个黑客的工作可能是:

#include <iostream>
#include <boost/date_time/gregorian/gregorian.hpp>

int main(void)
{
  auto ptr = boost::gregorian::greg_month::get_month_map_ptr();

  if (ptr)
  {
    auto it = ptr->begin();
    for(; it != ptr->end(); ++it)
    {
      std::cout << it->first << " " << it->second << '\n';
    }
  }
}

此映射包含所有短/长名称与创建greg_month实例所需的短名称之间的映射。只需要在它周围创建一个小包装......

根据Graeme的发现,有一个便利功能已经包装了这个boost::date_time::month_str_to_ushort<>

答案 1 :(得分:0)

是的,有一些提升日期时间方面可用于创建语言环境并放入流中。

请注意,如果要打印或解析大量日期和时间,则不要为每个解析的方法创建构面和区域设置。

查看here以获取有关输入日期的文档。他们的一些示例使用短月份名称,其%b

似乎为{{1}}