-
Problem with <chrono>
Probably somebody can help me with a new library <chrono>
By some way when I'm trying get system time with nanoseconds for example I have this result:
9h 7m 55s 0ms 0us 0ns
In header:
#include <chrono>
#include <iostream>
#include <ctime>
I don't have any idea if something else is required...
Software used: Codeblocks
Compilator: GNU GCC
C++0x enabled
-
What's the problem that you're facing?
-
I'm expecting some numbers instead of zero in "0ms 0us 0ns". Seems like time is counted only till seconds.
-
I suggest that you post the smallest and simplest compilable program that demonstrates the problem.
-
Whole script:
Code:
#include <chrono>
#include <iostream>
#include <ctime>
std::chrono::system_clock::duration duration_since_midnight() {
auto now = std::chrono::system_clock::now();
time_t tnow = std::chrono::system_clock::to_time_t(now);
tm *date = std::localtime(&tnow);
date->tm_hour = 0;
date->tm_min = 0;
date->tm_sec = 0;
auto midnight = std::chrono::system_clock::from_time_t(std::mktime(date));
return now-midnight;
}
int main()
{
auto since_midnight = duration_since_midnight();
auto hours = std::chrono::duration_cast<std::chrono::hours>(since_midnight);
auto minutes = std::chrono::duration_cast<std::chrono::minutes>(since_midnight - hours);
auto seconds = std::chrono::duration_cast<std::chrono::seconds>(since_midnight - hours - minutes);
auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(since_midnight - hours - minutes - seconds);
auto microseconds = std::chrono::duration_cast<std::chrono::microseconds>(since_midnight - hours - minutes - seconds - milliseconds);
auto nanoseconds = std::chrono::duration_cast<std::chrono::nanoseconds>(since_midnight - hours - minutes - seconds - milliseconds - microseconds);
std::cout << hours.count() << "h ";
std::cout << minutes.count() << "m ";
std::cout << seconds.count() << "s ";
std::cout << milliseconds.count() << "ms ";
std::cout << microseconds.count() << "us ";
std::cout << nanoseconds.count() << "ns\n";
}
-
Well, I am getting output like:
Code:
15h 58m 43s 282ms 425us 0ns
so this could just be platform dependent.
-
Seems like I was thinking about this also...
I test it on Windows XP and also on Windows 7...