Повысьте ptime со времени std :: strings

отредактированный для решения.


Это должно быть тривиальной задачей, но это занимает слишком много времени, и я начинаю сомневаться в своем здравом уме.

У меня четыре std::strings — часы, минуты, секунды и миллисекунды. Я хотел бы получить 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 );

0

Решение

Я думаю, что вы можете сделать:

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))
1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector