C++时间戳转化 *** 作实例分析【涉及GMT与CST时区转化】

C++时间戳转化 *** 作实例分析【涉及GMT与CST时区转化】,第1张

概述本文实例讲述了C++时间戳转化 *** 作。分享给大家供大家参考,具体如下:问题由来

本文实例讲述了C++时间戳转化 *** 作。分享给大家供大家参考,具体如下:

问题由来

时间戳转换(时间戳:自 1970 年1月1日(00:00:00 )至当前时间的总秒数。)

#include <stdio.h>#include <time.h>int main(int argc,const char * argv[]){  time_t t;  struct tm *p;  t=1408413451;  p=gmtime(&t);  char s[80];  strftime(s,80,"%Y-%m-%d %H:%M:%s",p);  printf("%d: %s\n",(int)t,s);}

结果

1408413451   2014-08-19 01:57:1408384651

可是利用命令在linux终端计算的结果不一

[###t]$ date -d @1408413451Tue Aug 19 09:57:31 CST 2014

通过比较发现,两者正好差8个小时,CST表示格林尼治时间,通过strftime()函数可以输出时区,改正如下

#include <stdio.h>#include <time.h>int main(int argc,"%Y-%m-%d %H:%M:%s::%Z",s);}

结果

1408413451: 2014-08-19 01:57:31::GMT

深究

GMT(Greenwich Mean Time)代表格林尼治标准时间。十七世纪,格林威治皇家天文台为了海上霸权的扩张计画而进行天体观测。1675年旧皇家观测所正式成立,通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有一个标志24小时的时钟,显示当下的时间,对全球而言,这里所设定的时间是世界时间参考点,全球都以格林威治的时间作为标准来设定时间,这就是我们耳熟能详的「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.)的由来。

CST却同时可以代表如下 4 个不同的时区:

Central Standard Time (USA) UT-6:00Central Standard Time (Australia) UT+9:30China Standard Time UT+8:00Cuba Standard Time UT-4:00

可见,CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间。

好了两者差8个小时(CST比GMT晚/大8个小时),GMT+8*3600=CST,代码如下

#include <stdio.h>#include <time.h>int main(int argc,s);  t=1408413451 + 28800;  p=gmtime(&t);  strftime(s,s);  return 0;}

结果

1408413451: 2014-08-19 01:57:31::GMT1408442251: 2014-08-19 09:57:31

linux平台

Tue Aug 19 09:57:31 CST 2014

PS:本站还提供了一个Unix时间戳转换工具,包含了各种常见语言针对时间戳的 *** 作方法,提供给大家参考:

Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtime

希望本文所述对大家C++程序设计有所帮助。

总结

以上是内存溢出为你收集整理的C++时间戳转化 *** 作实例分析【涉及GMT与CST时区转化】全部内容,希望文章能够帮你解决C++时间戳转化 *** 作实例分析【涉及GMT与CST时区转化】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1245046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存