Yanki Twizzy
Yanki Twizzy

Reputation: 8001

How do I convert a string in seconds to time in C++

I have a string that stores the no of seconds since a process started. I need to convert this string with the no of seconds to time in C++. I need to subtract this time from the current time to get the time that this process started. I am confused and I do not know how to go about it. Please could someone help me out. I am a bit new to C++

Upvotes: 0

Views: 1226

Answers (4)

LavaScornedOven
LavaScornedOven

Reputation: 747

Maybe you could try out Boost Time Library (http://www.boost.org/doc/libs/1_53_0/libs/timer/doc/index.html) or std::chrono if you're using newer compiler (as suggested below) and wish to stay within STL.

Upvotes: 3

user2176127
user2176127

Reputation:

Something like that could work:

#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);

Upvotes: 2

barak manos
barak manos

Reputation: 30136

You can use standard <time.h> routines (time, and gmtime or localtime).

For example:

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);
}

Please note that gmtime and localtime routines are not thread-safe.

This fact is due to the pointer-to-static-structure that each one of them returns.

Upvotes: 0

NaCl
NaCl

Reputation: 2723

#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

Upvotes: 1

Related Questions