C时间功能是否取决于系统时钟?

时间:2011-09-09 16:56:37

标签: c time

这特别适用于C语言中的gmtime()函数,但如果它与我想知道的其他函数相比有不同的时间。

就像我改变系统时间一样会搞砸了吗?它会得到错误的时间吗?

4 个答案:

答案 0 :(得分:1)

是。它们取决于系统时钟的值。如果更改系统时钟,您将得到不同的结果,因为这是获得当前系统时间的唯一方法(除非您使用类似NTP的东西,但在任何C / C ++标准库中都找不到)。

答案 1 :(得分:1)

在Windows上,time函数调用GetSystemTimeAsFileTime并进行一些简单的计算,将其转换为CRT时间格式(自1970年1月1970年以来的秒数)。其他时间函数(例如gmtime)不直接对系统时间进行操作;他们只是在不同的格式之间进行转换 - 通常是通过调用time获得的格式。

答案 2 :(得分:0)

由于签名和名称暗示:

struct tm * gmtime ( const time_t * timer );

此函数将time_t转换为tm作为UTC时间。请记住使用timer指向的值来填充tm结构,其中包含表示相应时间的值,表示为UTC(或GMT时区)。

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


int main ()
{
  time_t rawtime;
  struct tm * ptm;

  time ( &rawtime );

  ptm = gmtime ( &rawtime );

  return 0;
}

答案 3 :(得分:0)

是的,有几个,我能想到的是Posix Pthread函数pthread_cond_timedwait()如果未初始化系统时钟将无效。您需要了解所有函数的行为方式的细微差别以及它们如何依赖于系统的时间和区域设置,以及系统的时钟漂移......