用C语言获取本地的时区

Python07

用C语言获取本地的时区,第1张

getlocaltime里面是没有时区信息的。

你可以这样:

time_t time_utc = 0

struct tm *p_tm_time

int time_zone = 0

p_tm_time = localtime( &time_utc )   //转成当地时间

time_zone = ( p_tm_time->tm_hour > 12 ) ?   ( p_tm_time->tm_hour-=  24 )  :  p_tm_time->tm_hour

把0时间转为当地时间,得到的是带时区的结果。

C语言time(NULL)是以当前时间为种子,产生随意数。

其中,time(NULL)用来获取当前时间,本质上得到的是一个大整数,然后用这个数来随机数。

time()这个函数其实保存的是一个历史时间,所以需要用NULL把这个历史时间清空一下,time()就会自动保存当前时间了。你可以简单的理解为NULL就是给time()初始化。

c语言调用time()函数括号里为什么要用NULL?

time是这样声明的:time_ttime(time_t*timer)

用法是你先自己定义一个time_t变量,让后把变量的地址传给它。函数会返回自1970年1月1日0点走过的秒数,同时把这个返回值保存在你传进来的那个time_t*指向的变量里面

如果你传进来NULL的话,就不保存。

1、将获取的秒数赋值给一个长整型变量t;

2、然后声明c语言中的通用的时间结构体变量,定义它为p;

3、将获取的秒数t转换为这个时间结构体p;

4、然后用localtime函数显示出t的当地时间。

备注:(1)、ctime()和asctime()是格式输出函数,即将获得的时间按规定好的格式给你显示出来,它们两唯一的区别是ctime()的参数是秒数的地址,asctime()参数的地址是时间结构体的指针;(2)、该函数包含于C语言标准库time.h中。

如下:

#include "stdafx.h"

#include <stdio.h>

#include <time.h>

int main(int argc, char* argv[])

{

long t

struct tm *p

struct tm *p1

t=time(NULL)

printf("Now,the time is : %s",ctime(&t))

p=localtime(&t)

p1=gmtime(&t)

printf("\nLocaltime=:%s",asctime(p))

printf("\nGmtime=:%s",asctime(p1))

return 0

}