gpt4 book ai didi

c - 如何在 C 中以毫秒数的形式获取当前日期时间

转载 作者:太空狗 更新时间:2023-10-29 16:12:31 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,根据系统的内部时钟生成一个随机数,这样我就不需要种子或第一个值。第一个值必须通过将年、月、日、小时、分钟、秒转换为毫秒并将它们添加到当前毫秒以获得唯一编号(时间戳),从而从内部时钟中获取。在 C 中获得这些值有什么帮助吗?

最佳答案

您可以使用 clock_gettime()或者 gettimeofday() — 或者,如果您处于真正贫困的环境中,ftime()time() .确保您使用的数据类型足够大以容纳毫秒。

对于 clock_gettime(),结果是一个包含元素 tv_sectv_nsecstruct timespec。你会使用:

#include <time.h>
#include <stdint.h>

struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
int64_t millitime = t.tv_sec * INT64_C(1000) + t.tv_nsec / 1000000;

使用 gettimeofday()(官方已弃用,但使用更广泛——例如,Mac OS X 有 gettimeofday() 但没有 clock_gettime()),你有一个struct timeval,成员是tv_sectv_usec:

#include <sys/time.h>
#include <stdint.h>

struct timeval t;
gettimeofday(&t, 0);
int64_t millitime = t.tv_sec * INT64_C(1000) + t.tv_usec / 1000;

(请注意,ftime() 在旧版本的 POSIX 中是标准的,但不再是 POSIX 的一部分,尽管某些系统仍将提供它以实现向后兼容性。它在早期版本的 Unix 中可用作为第一个亚秒级时间设施,但早于第 7 版 Unix。它被添加到 POSIX(单一 Unix 规范)以实现向后兼容性,但如果你应该使用 clock_gettime()可以和 gettimeofday() 如果你不能。)

关于c - 如何在 C 中以毫秒数的形式获取当前日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22731173/

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