用C语言获取本地的时区

Python012

用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) 返回值 是 一模一样的,因为它等于

UTC 时间,从 1970年1月1日0时起到现在的 秒数。

当地时间的计算,涉及到时区。中国用东八区,当地时间偏移量 是 UTC+8 小时。

每年3月的最后一个星期天是几号,与年有关。

每年10月最后一个星期天是几号,与年有关。

算得 起始 月日,结束 月日。

当你的时间 介于 起始结束之间 就是 夏令时,设 key=1.

=======

下面给你 提示,算出 每年起始截止 月日,换算到 JD ( 该年的第几天),

你自己 得到 现在时间,调 YMD_2_JD 得到 JD_now,

if (JD_now <jd2 &&JD_now >jd) key =1else key=0

=========

#include<stdio.h>

#include<math.h>

#include<time.h>

int YMD_2_WeekDay(int Y, int M, int D){

int offset,jd,weekD

offset = ((Y-1)+(Y-1)/4-(Y-1)/100+(Y-1)/400) % 7

jd = YMD_2_JD(Y,M,D)

weekD = (jd + offset) % 7

return weekD

}

int YMD_2_JD(int Y, int M, int D){

const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31}

int JD,i

JD=D

for (i=0i<Mi++) JD+=MonthDay[i]

if (((Y%4==0)&&(Y%100!=0)||(Y%400==0)) &&(M>2)) JD++

return JD

}

int main()

{

int Y=2015,M=3,D=31,M2=10,D2=31

int wd,wd2,jd,jd2

wd = YMD_2_WeekDay(Y,M,D)

wd2 = YMD_2_WeekDay(Y,M2,D2)

D=D-wd

D2=D2-wd2

printf("date: %d %d\n",D,D2)

jd=YMD_2_JD(Y,M,D)

jd2 = YMD_2_JD(Y,M2,D2)

printf("J day: %d %d\n",jd,jd2)

return 0

}

/*

time(NULL)gets time

elapsed since 00:00 hours, Jan 1, 1970 UTC

*/