任何人都知道如何从当前时间提升到本地系统获得简单的日期格式?
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的例子,但我只想要一个简单的字符串。
答案 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"