C 时间戳差
是的,我修改了主题时间戳:),但有一点我不明白 我的代码:C 时间戳差,c,C,是的,我修改了主题时间戳:),但有一点我不明白 我的代码: #include <stdio.h> #include <time.h> int main () { time_t rawtime; struct tm * timeinfo; time_t now = time(NULL); time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ("Current l
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
time_t now = time(NULL);
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ("Current local time and date: %s \n", asctime (timeinfo) );
printf("System time: %d",now);
return 0;
}
#包括
#包括
int main()
{
时间与时间;
结构tm*时间信息;
time\u t now=时间(空);
时间(&rawtime);
timeinfo=localtime(&rawtime);
printf(“当前本地时间和日期:%s\n”,asctime(timeinfo));
printf(“系统时间:%d”,现在);
返回0;
}
跑步后我得到:
当前当地时间和日期:2013年5月3日星期五09:17:07
系统时间:1367565427
但是1367565427不是09:17而是07:17:07
为什么??我用“time_t now=time(NULL)”,询问我的本地系统时间(现在是09:17)
那么如何获取我的系统时间呢?时间戳是以GMT为单位的,而localtime将时间戳转换为您的本地时间,因此您似乎生活在GMT+2.0区域。时间戳是以GMT为单位的,而localtime将时间戳转换为您的本地时间,因此您似乎生活在GMT+2.0区域。更准确地说,unix时间戳是以UTC为单位的(无闰秒)。GMT有一个很小但很重要的区别。总结:我应该每次给这个值加7200秒?不,这是错误的,因为每个用户的时区都不一样。您应该使用localtime()将时间戳正确转换为人类可读的时间。是的,我知道对于不同时区的用户,时间戳是不同的。但是我在我的C程序中使用,我想把时间戳值保存在数据库中。我仍然不知道如何在我的计算机上显示我的时间戳:)时间戳是所有计算机的时间戳,它以UTC计算。你应该把它存起来。而且,对于每台计算机,在显示它时,您需要调用localtime或其他与时区有关的函数。更准确地说,unix时间戳是UTC(无闰秒)。GMT有一个很小但很重要的区别。总结:我应该每次给这个值加7200秒?不,这是错误的,因为每个用户的时区都不一样。您应该使用localtime()将时间戳正确转换为人类可读的时间。是的,我知道对于不同时区的用户,时间戳是不同的。但是我在我的C程序中使用,我想把时间戳值保存在数据库中。我仍然不知道如何在我的计算机上显示我的时间戳:)时间戳是所有计算机的时间戳,它以UTC计算。你应该把它存起来。而且,对于每台计算机,在显示它时,您需要调用localtime或其他与时区有关的函数。