提升现在简单的人类可读日期时间

时间:2011-10-26 15:10:00

标签: c++ boost

任何人都知道如何从当前时间提升到本地系统获得简单的日期格式?

boost::posix_time::ptime now = boost::posix_time::second_clock::universal_time();
boost::posix_time::time_facet *facet = new boost::posix_time::time_facet("%d-%m-%Y %H:%M:%S");

我见过使用cout.imbue的例子,但我只想要一个简单的字符串。

2 个答案:

答案 0 :(得分:6)

你可以试试这段代码:

void FormatDateTime(
    std::string const&              format,
    boost::posix_time::ptime const& date_time,
    std::string&                    result)
  {
    boost::posix_time::time_facet * facet =
      new boost::posix_time::time_facet(format.c_str());
    std::ostringstream stream;
    stream.imbue(std::locale(stream.getloc(), facet));
    stream << date_time;
    result = stream.str();
  }

将格式设置为"%d-%m-%Y %H:%M:%S"或您想要的任何方面。

对于当地时间,请使用boost::posix_time::second_clock::local_time()作为第二个参数(date_time)。

答案 1 :(得分:3)

我知道为时已晚,但对于像我这样的搜索者来说:

#include <boost/format.hpp>

const boost::posix_time::ptime now = boost::posix_time::second_clock::local_time();

const boost::wformat f = boost::wformat(L"%02d.%02d.%s  %02d:%02d")
                % now.date().year_month_day().dayas_number()
                % now.date().year_month_day().month.as_number()
                % now.date().year_month_day().year
                % now.time_of_day().hours()
                % now.time_of_day().minutes();

const std::wstring result = f.str();  // "21.06.2013  14:38"