如何在C ++中以秒为单位转换字符串

时间:2014-01-20 23:01:04

标签: c++ time

我有一个字符串,用于存储自进程启动以来的秒数。我需要在C ++中使用no来转换此字符串。我需要从当前时间中减去这个时间以获得此过程开始的时间。我很困惑,我不知道如何去做。请有人帮助我。我对C ++有点新鲜

4 个答案:

答案 0 :(得分:3)

如果您使用的是较新的编译器(如下所示)并希望保持在STL范围内,也许您可​​以试用Boost Time Library(http://www.boost.org/doc/libs/1_53_0/libs/timer/doc/index.html)或std::chrono

答案 1 :(得分:2)

这样的事情可以起作用:

#include <chrono>
#include <string>

using namespace std::chrono;

std::string elapsed_time_in_s = "123456";
system_clock::time_point then = system_clock::now() - 
    std::chrono::seconds(std::stoll(elapsed_time_in_s));

time_t then_as_time_t = system_clock::to_time_t(then);

答案 2 :(得分:1)

#include <sstream>
///
std::stringstream strs(seconds_string);
unsigned int tempTime=0;
if(!(strs >> tempTime))
    //error
//calculate around with tempTime
if(!(strs << tempTime)
    //error
if(!(strs >> seconds_string)
    //error
//new string with the current time

答案 3 :(得分:0)

您可以使用标准<time.h>例程(timegmtimelocaltime)。

例如:

void PrintProcessStartTimeAndDate(int numOfSeconds)
{
    time_t rawtime;
    struct tm* ptm;
    time(&rawtime);
    rawtime -= numOfSeconds;
    ptm = gmtime(&rawtime); // or localtime(&rawtime);
    printf("Process started at %.2d:%.2d:%.2d on %.2d/%.2d/%.2d\n",
            ptm->tm_hour,ptm->tm_min,ptm->tm_sec,ptm->tm_mday,ptm->tm_mon+1,ptm->tm_year+1900);
}

请注意,gmtimelocaltime例程不是线程安全的

这个事实是由于每个返回的指针到静态结构。