1

网上有大量代码让我相信以下内容会给我当前时间。然而,事实并非如此。我得到了我认为是 UNIX 纪元的时间;1970 年 1 月 1 日 00:00;00。

现在真的很烦人,为什么我的计算机系统时钟控制的不是当前时间?我正在为 C 中的嵌入式系统执行此操作。IDE 是 mplab。

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

int main () {

time_t time_raw_format;
struct tm * ptr_time;

time ( &time_raw_format );
ptr_time = localtime ( &time_raw_format );
printf ("Current local time and date: %s", asctime(ptr_time));

return 0;
}
4

1 回答 1

1

C 标准不要求时间可用,并且time例程可以返回 –1(并将其放置在指向的位置)。您的代码不会检查返回值,因此没有理由相信之后的任何代码都会执行任何有用的操作。因此,首先要做的是检查 的返回值time

同样,localtime如果无法转换为本地时间,则可能会返回空指针,并且您的代码不会检查localtime.

于 2013-05-20T18:29:19.697 回答