boost работа с датой и временем одновременно С++
В одном из классов мне необходимо фиксировать дату + время. Я хочу это сделать в одном поле, но ни boost::posix_time::ptime ни boost::gregorian::date мне не предоставляет такой возможности (а возможно и предоставляет, поэтому я здесь).
Суть таски в том, чтобы искать объект по дата+время, который я должна задать САМА.
Я могу сгенерить время+дата при создании объекта так:
#include "boost/date_time/posix_time/posix_time.hpp"
boost::posix_time::ptime CreationTime = boost::posix_time::second_clock::local_time();
и выведется мне что-то типа: 2020-Dec-23 03:56:46
Круто. Как создать переменную, допустим, в мейне, с таким же типом, но самой указать параметры(дату и время)? Жду любого работающего примера. Благодарю.
Ответы (1 шт):
Вот написал вспомогательную функцию CreatePTime(...) и с помощью её в main() задаю заданную дату из строки и формата времени.
#include <locale>
#include <sstream>
#include <string>
#include <iostream>
#include <boost/date_time/posix_time/posix_time.hpp>
boost::posix_time::ptime CreatePTime(std::string const & stime, std::string const & fmt) {
std::locale const loc = std::locale(std::locale::classic(),
new boost::posix_time::time_input_facet(fmt));
std::istringstream is(stime);
is.imbue(loc);
boost::posix_time::ptime t;
is >> t;
return t;
}
int main() {
boost::posix_time::ptime CreationTime = CreatePTime("2020-12-23 01:02:34", "%Y-%m-%d %H:%M:%S");
std::cout << CreationTime << std::endl;
}
Вывод:
2020-Dec-23 01:02:34