获取时区方法(C语言实现)
2013-04-17 16:37
363 查看
本文首先普及一下时区以及各种时间的含义。
如果不需普及直接跳到最后的代码,为获取时区的C语言代码。
时区
咱们一起回忆一下中学的地理知识,地球是自西向东自传逆时针自传,自西向东逆时针公转。所以阳光总是自东向西扫过,也就是我们常说的太阳东升西落。
[align=left] 地球自传一周的弧度是360度,时间是24小时,所以人类在西元1884年的国际会议上制定了全球性的标准时,明定以英国伦敦格林威治这个地方为零度经线的起点(亦称为本初子午线),并以地球由西向东每24小时自转一周360°,订定每隔经度15°,时差1小时。而每15°的经线则称为该时区的中央经线。和0度经线对着的180度的经线也被称为换日线,因为自西向东越过此线时,日期需要加一日。(这一个换日线在中国的中学地理里演变出了各种万恶的计算题)[/align]
[align=left] 以本初子午线为界,往西顺次称为西一区直至西十二区,向东为东一区至东12区。中国虽然跨越多个时区,统一使用北京所在的东八区作为中国的标准时间。[/align]
GMT (Greenwich Mean Time) 格林威治时间
[align=left] 即本初子午线的时间,一般作为全球时间的基准参考时间。据说是以格林威治天文台命名的。(谁让那时候人家国家牛呢,要是中国制定规则的话没准就以中国时间为准了。)[/align]
UTC (Universal Time Coordinated) 世界标准时间或世界协调时间
[align=left] 协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。UTC时间和GMT时间其实是同一个时间,只不过UTC时间的单位是秒。定期会进行校准,校准的方式是发布闰秒,即有两个同样的秒。记住,UTC是GMT的以秒为单位的计时。[/align]
CST (China Standard Time) 中国标准时间
[align=left] 即咱们新闻联播那个嘟嘟嘟的时间。也就是东八区的时间。当GMT为0点的时候,我们已经8点了。我们的时间需要在GMT的时间上加八个小时(这可是中学地理题哦,呵呵呵)[/align]
获取时区的代码
[align=left] 下面是获取时区的代码,根据时区即可换算GMT时间到本地时间。[/align]
出道中学地理题检测一下(题目源自网络)
[align=left]当世界标准时间为2006年1月1日4点时,全球已是2005年的范围大约是 [/align]
A.全球一半的地区 B.全球三分之一的地区 C.全球大于四分之三的地区 D.全球多于一半的地区
[align=left]答案是: B 哦~ [/align]
[align=left] [/align]
如果不需普及直接跳到最后的代码,为获取时区的C语言代码。
时区
咱们一起回忆一下中学的地理知识,地球是自西向东自传逆时针自传,自西向东逆时针公转。所以阳光总是自东向西扫过,也就是我们常说的太阳东升西落。
[align=left] 地球自传一周的弧度是360度,时间是24小时,所以人类在西元1884年的国际会议上制定了全球性的标准时,明定以英国伦敦格林威治这个地方为零度经线的起点(亦称为本初子午线),并以地球由西向东每24小时自转一周360°,订定每隔经度15°,时差1小时。而每15°的经线则称为该时区的中央经线。和0度经线对着的180度的经线也被称为换日线,因为自西向东越过此线时,日期需要加一日。(这一个换日线在中国的中学地理里演变出了各种万恶的计算题)[/align]
[align=left] 以本初子午线为界,往西顺次称为西一区直至西十二区,向东为东一区至东12区。中国虽然跨越多个时区,统一使用北京所在的东八区作为中国的标准时间。[/align]
GMT (Greenwich Mean Time) 格林威治时间
[align=left] 即本初子午线的时间,一般作为全球时间的基准参考时间。据说是以格林威治天文台命名的。(谁让那时候人家国家牛呢,要是中国制定规则的话没准就以中国时间为准了。)[/align]
UTC (Universal Time Coordinated) 世界标准时间或世界协调时间
[align=left] 协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。UTC时间和GMT时间其实是同一个时间,只不过UTC时间的单位是秒。定期会进行校准,校准的方式是发布闰秒,即有两个同样的秒。记住,UTC是GMT的以秒为单位的计时。[/align]
CST (China Standard Time) 中国标准时间
[align=left] 即咱们新闻联播那个嘟嘟嘟的时间。也就是东八区的时间。当GMT为0点的时候,我们已经8点了。我们的时间需要在GMT的时间上加八个小时(这可是中学地理题哦,呵呵呵)[/align]
获取时区的代码
[align=left] 下面是获取时区的代码,根据时区即可换算GMT时间到本地时间。[/align]
/** * @file tt_time.c * @brief * @author cjx * @version * @date 2013-04-17 */ #include <stdio.h> #include <time.h> int main(int argc,char *argv[]) { time_t time_utc; struct tm tm_local; // Get the UTC time time(&time_utc); // Get the local time // Use localtime_r for threads safe localtime_r(&time_utc, &tm_local); time_t time_local; struct tm tm_gmt; // Change tm to time_t time_local = mktime(&tm_local); // Change it to GMT tm gmtime_r(&time_utc, &tm_gmt); int time_zone = tm_local.tm_hour - tm_gmt.tm_hour; if (time_zone < -12) { time_zone += 24; } else if (time_zone > 12) { time_zone -= 24; } char cur_time[256]; strftime (cur_time,256, " %B %A %Y年%m月%d日 %H时%M分%S秒 %c %x %X", &tm_local); printf("LOCAL TIME :%s\n", cur_time); strftime(cur_time,256, " %B %A %Y年%m月%d日 %H时%M分%S秒 %c %x %X", &tm_gmt); printf("GMT TIME :%s\n", cur_time); printf("Your time zone is +%d. (- is west, + is east)\n", time_zone); return 0; }
出道中学地理题检测一下(题目源自网络)
[align=left]当世界标准时间为2006年1月1日4点时,全球已是2005年的范围大约是 [/align]
A.全球一半的地区 B.全球三分之一的地区 C.全球大于四分之三的地区 D.全球多于一半的地区
[align=left]答案是: B 哦~ [/align]
[align=left] [/align]
相关文章推荐
- C语言获取Shell返回结果的实现方法
- C语言获取Shell返回结果的实现方法
- Linux下获得系统时间的C语言的实现方法
- 在C语言编程中设置和获取代码组数的方法
- Python获取电脑硬件信息及状态的实现方法
- 利用C语言实现“百马百担”问题方法示例
- java 结合jQuery实现跨域名获取数据的方法
- C++中子类获取父类的方法,模板实现
- C语言中strand() rand() time()函数的简单介绍及获取随机数的方法
- Python实现获取磁盘剩余空间的2种方法
- 利用ASM进行方法拦截中获取相关数据的实现
- C语言实现Windows下获取IP和MAC地址。
- 文本框(input)获取焦点(onfocus)时样式改变的实现方法
- Ajax获取数据然后显示在页面的实现方法
- 获取IE地址栏的URL(C语言实现)
- jquery遍历table的tr获取td的值实现方法
- php获取当月天数及当月第一天及最后一天、上月第一天及最后一天实现方法
- 数据排序的几种方法(c语言实现)
- 用C语言实现硬件信息的获取
- JavaScript实现获取select下拉框中第一个值的方法