0

解決のために編集されました。


これは些細な作業のはずですが、時間がかかりすぎて、自分の正気を疑い始めています。

std::string時間、分、秒、ミリ秒の4 つの s があります。ptime私はそれらから抜け出したいです。最初は、文字列を数値に変換し (? を使用)、ダミーの日付 (気にしないため)、または今日の日付と一緒にコンストラクターにlexical_castプラグインすることを考えました。ptime(date,time_duration)次に、単一の文字列を作成してそれを ptime に変換するだけで、より効率的で作業が少なくなる可能性があると考えました...しかし、リンクエラーに遭遇しただけでなく、gregorian::date.

この時点で、私はこれを考えすぎているのではないかと判断しました。しばらくすると、これら 2 つの方法のいずれかが機能するようになる可能性がありますが、もっと簡単な方法をハッキングしているように感じます。私ですか?

編集


これが私がやったことです。私が望んでいたほどエレガントではありませんが、動作することに満足できます。今のところ。

using namespace boost::posix_time;
using namespace boost::gregorian;

std::string date_str = to_iso_extended_string( day_clock::local_day() );    // YYYY-MM-DD
std::string time_str( " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds);    // HH:MM:SS:MMM
return time_from_string( date_str + time_str );
4

1 に答える 1

1

私はあなたができると思います:

using namespace boost::posix_time;
long h = 1, m = 1, s = 1;//Get these from your lexical cast
ptime t(ptime(min_date_time) + hours(h) + minutes(m) + seconds(s));

std::cout << t << std::endl;//! output is 1400-Jan-01 01:01:01

min_date_time は、日付を気にしないことを前提としています (表現可能な最も早い日付を使用します)。

または、次を使用できます。

std::string ts("2002-01-20 23:59:59.000");
ptime t(time_from_string(ts))
于 2014-08-01T16:25:24.517 に答える