有没有办法在c语言中使用time.h从1970年获得毫秒及其分数部分?
这适用于Ubuntu Linux:
#include... struct timeval tv; gettimeofday(&tv, NULL); unsigned long long millisecondsSinceEpoch = (unsigned long long)(tv.tv_sec) * 1000 + (unsigned long long)(tv.tv_usec) / 1000; printf("%llu\n", millisecondsSinceEpoch);
在撰写本文时,上面的printf()给了我1338850197035.您可以在TimestampConvert.com网站上进行健全性检查,您可以在其中输入值以获取等效的人类可读时间(尽管没有毫秒精度) .
如果你想要毫秒级的分辨率,你可以在Posix中使用gettimeofday().对于Windows实现,请参阅windows的gettimeofday函数.
#include... struct timeval tp; gettimeofday(&tp); long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000;
它不是标准C,但gettimeofday()
存在于SysV和BSD派生系统中,并且位于POSIX中.它返回自纪元以来的时间struct timeval
:
struct timeval { time_t tv_sec; /* seconds */ suseconds_t tv_usec; /* microseconds */ };