在Java中,我们可以使用System.currentTimeMillis()以纪元时间为单位获取当前时间戳,以毫秒为单位 -
当前时间与UTC时间1970年1月1日午夜之间的差值,以毫秒为单位.
在C++中如何获得相同的东西?
目前我用它来获取当前时间戳 -
struct timeval tp;
gettimeofday(&tp, NULL);
long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds
cout << ms << endl;
Run Code Online (Sandbox Code Playgroud)
看起来对不对?
Oz.*_*Oz. 207
如果您可以访问C++ 11库,请查看std::chrono库.您可以使用它来获取自Unix Epoch以来的毫秒数:
#include <chrono>
// ...
using namespace std::chrono;
milliseconds ms = duration_cast< milliseconds >(
system_clock::now().time_since_epoch()
);
Run Code Online (Sandbox Code Playgroud)
Try*_*ing 38
使用 <sys/time.h>
struct timeval tp;
gettimeofday(&tp, NULL);
long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;
Run Code Online (Sandbox Code Playgroud)
参考这个.
Ale*_*ato 25
从 C++11 开始,您可以使用std::chrono:
std::chrono::system_clock::now().time_since_epoch()duration_cast<milliseconds>(d)std::chrono::milliseconds为整数(uint64_t以避免溢出)#include <chrono>
#include <cstdint>
#include <iostream>
uint64_t timeSinceEpochMillisec() {
using namespace std::chrono;
return duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count();
}
int main() {
std::cout << timeSinceEpochMillisec() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
kay*_*eck 13
这个答案是非常相似奥兹的.使用<chrono>C++的-因为我不是从奥兹抓住它.虽然...
我拿起了本页底部的原始代码段,稍加修改它就是一个完整的控制台应用程序.我喜欢使用这个"小"的东西.如果你做了很多脚本并且在Windows中需要一个可靠的工具来实现毫秒而不是使用VB,或者一些不那么现代,不易读取的代码,那就太棒了.
#include <chrono>
#include <iostream>
int main() {
unsigned __int64 now = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
std::cout << now << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
rli*_*rli 12
如果使用gettimeofday你必须转换为long long,否则你将获得溢出,因此不是自epoch以来的实际毫秒数:long int msint = tp.tv_sec*1000 + tp.tv_usec/1000; 会给你一个像767990892这样的数字,它是在纪元后8天的圆形;-).
int main(int argc, char* argv[])
{
struct timeval tp;
gettimeofday(&tp, NULL);
long long mslong = (long long) tp.tv_sec * 1000L + tp.tv_usec / 1000; //get current timestamp in milliseconds
std::cout << mslong << std::endl;
}
Run Code Online (Sandbox Code Playgroud)