0

Boost datetimeを使用して、最初の9か月間はゼロで埋められた月の文字列を作成するにはどうすればよいですか?

だから私は「5」ではなく「05」が必要です。

date Date(2012,05,1);

string monthStringAsNumber = lexical_cast<string>(date.Month().as_number()); 
// returns "5"

string monthStringAsNumberTwo = date.Month().as_short_string();
// returns "Aug"

「05」をお願いします。どうすればこれを行うことができますか?

どうもありがとう。

4

2 に答える 2

4

あなたは本当に必要ではありませんlexical_cast以下はうまくいくはずです:

stringstream ss;
ss << setw(2) << setfill('0') << date.Month().as_number());
string monthStringAsNumber = ss.str();

または、このハウラーに行くこともできます:

const string mn[] ={ "01", "02", "03", "04", "05", "06",
                     "07", "08", "09", "10", "11", "12" };
const string& monthStringAsNumber = mn[ date.Month().as_number() ];
于 2012-05-17T15:25:04.000 に答える
0

一般に、カスタマイズされた形式で日時を取得する場合は、http://www.boost.org/doc/libs/1_49_0/doc/html/date_time/date_time_io.htmlを確認できます。

#include <boost/date_time.hpp>
#include <iostream>
#include <sstream>
#include <string>

int main(int argc, char** argv)
{
    boost::gregorian::date date (2012,5,1);
    boost::gregorian::date_facet* facet = 
            new boost::gregorian::date_facet("%Y %m %d");
    // ^ yes raw pointer here, and don't delete it.
    std::ostringstream ss;
    ss.imbue(std::locale(std::locale(), facet));
    ss << date;
    std::string s = ss.str();

    std::cout << s << std::endl;   // 2012 05 01
    return 0;
}
于 2012-05-17T15:45:48.797 に答える