C ++ 11打印当前系统时间(包括毫秒)

时间:2016-04-30 02:41:12

标签: c++

我希望打印当前(本地)时间(基于说std::chrono::system_clock),同时包括毫秒,例如12:32:45.287。 我可以在没有毫秒的情况下完成:

std::time_t time = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
char buffer[sizeof("HH:MM:SS")];
if (std::strftime(buffer, sizeof(buffer), "%H:%M:%S", std::localtime(&time)) == 0)
    std::cout << "Error formating time" << std::endl;
else std::cout << buffer << std::endl;

如果我可以获得整数毫秒,那也是好的。 (我可以使用std::localtime(&time)->tm_sec)获得秒数

编辑我想要一个可移植的解决方案,但如果这不可行,那么可以使用Windows 10 / Visual C ++ 14.0 / Intel Compiler 16.0

2 个答案:

答案 0 :(得分:0)

如果使用linux或unix,则可以按此时间间隔获得毫秒数。

#include <cstdio>
#include <iostream>
#include <sys/time.h>
using namespace std;

long getCurrentTime() {
   struct timeval tv;
   gettimeofday(&tv,NULL);
   return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}

int main() {
    cout<<"milliseconds: "<<getCurrentTime()<<endl;
    return 0;
}

答案 1 :(得分:0)

如果你想在C中移植它,那么看看便携式库正在使用什么,即Apache APR ......

https://apr.apache.org/docs/apr/2.0/group__apr__time.html

或者用C编写的移植到你想要定位的平台的应用程序,即Mysql,Lua,JVM