Повысьте ptime со времени std::strings
Отредактировано для решения.
Это должно быть тривиальной задачей, но это занимает слишком много времени, и я начинаю сомневаться в своем здравом уме.
У меня четыре std::string
s - часы, минуты, секунды и миллисекунды. Я хотел бы получить ptime
из них. Сначала я подумал преобразовать строки в числа (используя lexical_cast
?) и вставьте их в ptime(date,time_duration)
конструктор вместе с фиктивной датой (потому что мне все равно) или, может быть, даже с сегодняшней датой. Затем я подумал, что это может быть более эффективным и менее эффективным, если я просто создаю одну строку и преобразую ее в свое время ptime... но я не только столкнулся с ошибками компоновки, но и должен был получить gregorian::date
,
В этот момент я решил, что, может быть, я обдумываю это. Я мог бы, вероятно, заставить один из этих двух методов работать через некоторое время, но мне кажется, что я взломал что-то, что должно быть намного проще. Я?
РЕДАКТИРОВАТЬ
Вот что я в итоге сделал. Это не так элегантно, как хотелось бы, но я могу согласиться, что это сработает. Теперь.
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 );
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))