gpt4 book ai didi

c - 如何获得 C 的 Unix 时间戳( double 或 float )

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:15 25 4
gpt4 key购买 nike

如何获得 C 的 Unix 时间戳,特别是显示小数位。我在别处找到的所有答案都返回一个整数。

最佳答案

time()函数只返回一个整数。两个都 gettimeofday()clock_gettime()返回具有秒和亚秒的结构(不同的结构)(gettimeofday() 为微秒,clock_gettime() 为纳秒)。您必须进行适当(但简单)的计算才能将其作为 double 返回。

将当前 Unix 时间戳作为 float 返回是没有意义的;您只能获得精确到几分钟左右的值。

POSIX 已正式弃用 gettimeofday()。但是,Mac OS X 没有 clock_gettime(),因此您可能会发现 gettimeofday() 的应用更为广泛。

#include <time.h>
#include <stdio.h>

int main(void)
{
long t0 = time(0);
float f0 = t0;
float f1;
float f2;

long d_pos = 0;
long d_neg = 0;

while ((f1 = t0 + d_pos) == f0)
d_pos++;
while ((f2 = t0 + d_neg) == f0)
d_neg--;

printf("t0 = %ld; f0 = %12.0f; d_pos = %ld (f1 = %12.0f); d_neg = %ld (f2 = %12.0f)\n",
t0, f0, d_pos, f1, d_neg, f2);
return 0;
}

示例输出:

t0 = 1385638386; f0 =   1385638400; d_pos = 79 (f1 =   1385638528); d_neg = -51 (f2 =   1385638272)

关于c - 如何获得 C 的 Unix 时间戳( double 或 float ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20264826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com