2015-06-29 2 views
-1

Я пробовал this и другие коды, которые я нашел онлайн, но они не сработали. Моя IDE - Xcode. Редактировать: Когда я пробовал код по ссылке, переменная длинные микросекунды всегда возвращались 0. Я хотел бы напечатать метку времени таким образом: (час: минута: микросекунды). Например, 15: 17: 09: 134613464312.Как получить временную метку в микросекундах на C++?

+0

* Как это работает? Какие у вас проблемы? Какие ошибки, если они есть? Если он строит правильно, без предупреждения, какой результат вы ожидали и что вы получили? –

+1

* «не работает» * - что случилось, когда вы их попробовали? Получили ли вы сообщение об ошибке компилятора (и если да, то), или сомнительное значение времени выполнения? BTW/- для связанного решения вам понадобится C++ 11-совместимый компилятор с поддержкой C++ 11. Для «и других кодов» - вы также должны их описывать? Какое использование людей здесь тратит время, чтобы предоставить вам тот же ответ, который вы уже пробовали? Если вы покажете, что вы пробовали, они могут увидеть вашу ошибку и предложить некоторые целевые советы. –

+0

Пожалуйста, проверьте это. http://stackoverflow.com/questions/22203319/c-c-microsecond-timestamp –

ответ

0

Метод, который вы используете, является правильным.

Если код между двумя вызовами now() длится меньше микросекунды, микросекунды всегда будут равны нулю, так как число не является плавающей точкой. Если у вас всегда ноль, значит, вам нужно более высокое разрешение (попробуйте наносекунды).

Btw, если вы просто хотите использовать метку времени, вы не хотите использовать этот код, поскольку он выполняется для вычисления прошедшего времени между двумя точками времени. Вы можете попробовать что-то вроде этого:

auto microseconds = std::chrono::duration_cast<std::chrono::microseconds> 
    (std::chrono::high_resolution_clock::now().time_since_epoch()).count(); 

Это действительно временная метка, а не продолжительность.

EDIT: Чтобы рассчитывать текущие микросекунды, вы можете сделать что-то вроде этого:

#include <iostream> 
#include <chrono> 
#include <ctime> 

using namespace std; 
using namespace std::chrono; 

using days = duration<int, ratio_multiply<hours::period, ratio<24> >::type>; 

int main() { 
    system_clock::time_point now = system_clock::now(); 
    system_clock::duration tp = now.time_since_epoch(); 
    days d = duration_cast<days>(tp); 
    tp -= d; 
    hours h = duration_cast<hours>(tp); 
    tp -= h; 
    minutes m = duration_cast<minutes>(tp); 
    tp -= m; 
    seconds s = duration_cast<seconds>(tp); 
    tp -= s; 
    cout << tp.count() << "\n"; 
    return 0; 
} 

Это будет печатать рассчитывать текущие микросекунды.

Часы: минуты: секунды довольно легкие.

+0

Благодарим за быстрый ответ. Я хотел бы показать это следующим образом: (час: минута: микросекунды). Например, 15: 17: 09: 134613464312. Я был бы признателен, если бы вы также сказали мне, как это сделать. Мне жаль, что я не был точен. – stacktest

+0

Вам нужна отметка времени или текущее время? На самом деле это не то же самое. Если вы хотите отобразить временную метку, в часы показа нет смысла, так как это больше, чем 45 лет. –

+0

Прошу прощения за путаницу. Я хочу точное текущее время, как в примере. – stacktest

Смежные вопросы