std::chrono::system_clock::time_point StringtoDate(std::string date)
{
std::string year = date.substr(0, 4);
std::string month = date.substr(4, 2);
std::string day = date.substr(6, 2);
tm tmObj;
tmObj.tm_year = std::atoi(year.c_str()) - 1900;
tmObj.tm_mon = std::atoi(month.c_str()) - 1;
tmObj.tm_mday = std::atoi(day.c_str());
tmObj.tm_hour = std::atoi("0");
tmObj.tm_min = std::atoi("0");
tmObj.tm_sec = std::atoi("0");
//std::time_t tt = mktime(&tmObj);
return std::chrono::system_clock::from_time_t(mktime(&tmObj));
}
std::chrono::system_clock::time_point StringtoDateTime(std::string date, std::string time)
{
std::string year = date.substr(0, 4);
std::string month = date.substr(4, 2);
std::string day = date.substr(6, 2);
std::string hour = time.substr(0, 2);
std::string min = time.substr(2, 2);
std::string sec = time.substr(4, 2);
tm tmObj;
tmObj.tm_year = std::atoi(year.c_str()) - 1900;
tmObj.tm_mon = std::atoi(month.c_str()) - 1;
tmObj.tm_mday = std::atoi(day.c_str());
tmObj.tm_hour = std::atoi(hour.c_str());
tmObj.tm_min = std::atoi(min.c_str());
tmObj.tm_sec = std::atoi(sec.c_str());
size_t pos = time.find(".", 0);
if (pos == std::string::npos)
{
return std::chrono::system_clock::from_time_t(std::mktime(&tmObj));
}
else
{
std::string strMS = time.substr(pos + 1, time.length() - pos - 1);
long long ms = std::atoll(strMS.c_str());
return (std::chrono::system_clock::from_time_t(std::mktime(&tmObj)) + std::chrono::microseconds(ms));
}
}
std::string DatetoString(std::chrono::system_clock::time_point timePoint)
{
std::time_t tt = std::chrono::system_clock::to_time_t(timePoint);
std::stringstream ss;
ss << std::put_time(std::localtime(&tt), "%Y%m%d");
return ss.str();
}
std::string TimetoString(std::chrono::system_clock::time_point timePoint)
{
std::time_t tt = std::chrono::system_clock::to_time_t(timePoint);
auto ms = timePoint.time_since_epoch();
auto diff = std::chrono::duration_cast<std::chrono::microseconds>(ms).count();
auto const mcsecs = diff % 1000000;
std::stringstream ss;
if (mcsecs == 0)
{
ss << std::put_time(std::localtime(&tt), "%H%M%S");
}
else
{
ss << std::put_time(std::localtime(&tt), "%H%M%S") << "." << mcsecs;
}
return ss.str();
}