getlocaltime里面是没有时区信息的。
你可以这样:
time_t time_utc = 0struct 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
}