Если вам нужен этот формат c, единственный известный мне способ - это самостоятельно проанализировать время, прошедшее со счетчика эпох (или получить формат времени по умолчанию, как показано ниже, проанализировать все его элементы и переставить их самостоятельно в другая строка).
Между тем, вы можете сделать это в формате по умолчанию, подобном этому (включая ctime и chrono)
auto t = std::chrono::system_clock::now();
auto ptr = std::chrono::system_clock::to_time_t(t);
char time[255];
auto frm = ctime_s(time, 255, &ptr);
printf("%s\n", time);
getchar();
Вывод:
Sat Jun 20 07:28:36 2020
Изменить:
Я нашел способ сделать это с помощью стандартных функций:
char timestamp[50]{ 0 };
std::time_t time = std::time(nullptr);
std::strftime(timestamp, 30, "[%H:%M:%S]", std::localtime(&time));
К сожалению, я не верю, что существует стандартный способ получить текущее количество миллисекунды, возможно, потому, что ОС не отслеживает это.
Когда вы видите отметки времени в программах других людей, миллисекунды, вероятно, подсчитываются ими (но я могу ошибаться).
Если вы хотите сделать это, вы можете получить количество миллисекунд (с эпохи или с момента запуска ОС, в зависимости от того, какую функцию вы используете) в начале программы, а затем каждый раз, когда вы вычисляете временную метку, возьмите его снова и вычтите из него исходный.
Допустим, вы используете Windows, вы можете сделать это:
// Get the initial tick
unsigned int starttick = GetTickCount();
... Do your stuff here
// Get the current tick:
unsigned int stoptick = GetTickCount();
// Subtract current tick from start tick to get elapsed milliseconds (roughly)
printf("%d", (stoptick - starttick));
Или вы можете использовать Chrono:
auto s = std::chrono::high_resolution_clock::now();
Sleep(1500);
auto st = std::chrono::high_resolution_clock::now();
auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(st - s).count();
printf("%lld", ms);
getchar();