有没有办法从c语言中使用time.h获得1970年的毫秒及其小数部分?如何从1970年1月1日以c语言获得UTCTime(以毫秒为单位)
回答
这工作在Ubuntu Linux:
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网站,你可以做一个全面的检查输入该值以获取相当于人类可读的时间(尽管毫秒级精度)。
Unix time or Posix time是秒以来的时间,因为您提到的时代。
bzabhi的答案是正确的:你只需乘以1000 Unix时间戳获得毫秒。
请注意,依靠Unix时间戳返回的所有毫秒值将是倍数(例如12345678000)。决议仍然只有1秒。
你不能得到分数部分
从帕维尔的评论是正确的也是。 Unix时间戳不考虑闰秒。这使得依靠转换为毫秒来更不明智。
对于Unix和Linux,您可以使用gettimeofday。
Win32上,你可以使用GetSystemTimeAsFileTime然后convert it to time_t + milliseconds。
gettimeofday()完成所需的任务。以下是一个代码示例:http://www.docs.hp.com/en/B9106-90009/gettimeofday.2.html 那么Aman试图支持哪些操作系统? – tpgould 2009-12-23 12:12:55
这不是标准的C,但gettimeofday()
存在于两者的SysV和BSD派生的系统,并且是在POSIX。它将返回的时间,因为在struct timeval
时代:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
如果你想毫秒的分辨率,可以在Posix的使用的gettimeofday()。对于Windows实现,请参阅gettimeofday function for windows。
#include <sys/time.h>
...
struct timeval tp;
gettimeofday(&tp);
long int ms = tp.tv_sec * 1000 + tp.tv_usec/1000;
// the system time
SYSTEMTIME systemTime;
GetSystemTime(&systemTime);
// the current file time
FILETIME fileTime;
SystemTimeToFileTime(&systemTime, &fileTime);
// filetime in 100 nanosecond resolution
ULONGLONG fileTimeNano100;
fileTimeNano100 = (((ULONGLONG) fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime;
//to milliseconds and unix windows epoche offset removed
ULONGLONG posixTime = fileTimeNano100/10000 - 11644473600000;
return posixTime;
- 1. ASP.NET:自1970年1月1日以来获取毫秒
- 2. Java.util.Calendar - 1970年1月1日以来的毫秒数
- 3. Scala自1970年1月1日起的UTC时间戳,以秒为单位
- 4. 如何转换毫秒自1970年1月1日00:00:00至日期2016年1月20日
- 5. Qt QDateTime 1970年1月1日以后的纳秒
- 6. 从毫秒返回1970年1月份时失去一小时
- 7. 使用C语言将1970年1月1日之前的秒转换为日期
- 8. 为什么从1970年1月1日起计算日期?
- 9. 查找自1970年1月1日以来的过去几秒钟
- 10. python:自1970年1月1日起,将年/月/日/小时/分/秒转换为#秒
- 11. Java时间:从1970年1月1日凌晨1点开始?
- 12. 获取:1970年1月1日使用MySQL输出JDBC列
- 13. 1970年1月1日之前的日期
- 14. 如何在VBA中获得自纪元(1/1/1970)以来的秒数?
- 15. 如何以秒为单位返回以毫秒为单位的日期?
- 16. Javascript:以毫秒为单位的日期
- 17. 筛选日期以毫秒为单位
- 18. 转换毫秒为日期1970年收益为一年
- 19. 如何将日期转换为1970年以来使用Javascript的毫秒数?
- 20. 如何获得两个QDateTimes之差(以毫秒为单位)?
- 21. NetStream.seek以毫秒为单位
- 22. 如何使用Go语言以毫秒为单位获取当前时间?
- 23. 转换时间戳表示1970年1月1日午夜协调世界时(UTC)以来的秒数。
- 24. 使用MediaStore.Images.Media.insertImage保存图像,但日期时间为1970年1月1日
- 25. 从日期获取时间(以毫秒为单位)
- 26. Oracle日期 - 获得给定年份的1月1日
- 27. 如何将日/月/年日期转换为自0001年1月1日以来.NET样式100ns的勾号?
- 28. Objective C - 1970年1月1日00:00:00 UTC和给定日期之间的秒数
- 29. 如何将1970年以来的C/unix整数日期时间以秒为单位转换为Delphi中的DateTime?
- 30. 以毫秒为单位的TImespan,以分钟和秒为单位
你不能得到独立于平台的方式小数部分。你关注哪个平台? – dalle 2009-12-23 11:56:18
我遵循ANSI C的标准,以便我的应用程序将独立于平台。目前我在窗口平台上。 – Siddiqui 2009-12-23 12:05:35