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

 更新时间:2017年05月27日 08:53:58   作者:jihite  
这篇文章主要介绍了C++时间戳转化操作,结合实例形式分析了C++时间戳转换与显示操作的原理与具体实现技巧,涉及GMT与CST时区转化,需要的朋友可以参考下

本文实例讲述了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 @1408413451
Tue Aug 19 09:57:31 CST 2014

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

#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::%Z", p);
  printf("%d: %s\n", (int)t, 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:00
Central Standard Time (Australia) UT+9:30
China Standard Time UT+8:00
Cuba Standard Time UT-4:00

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

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

#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::%Z", p);
  printf("%d: %s\n", (int)t, s);
  t=1408413451 + 28800;
  p=gmtime(&t);
  strftime(s, 80, "%Y-%m-%d %H:%M:%S", p);
  printf("%d: %s\n", (int)t, s);
  return 0;
}

结果

1408413451: 2014-08-19 01:57:31::GMT
1408442251: 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++获取项目路径的两种方式详解

    C++获取项目路径的两种方式详解

    这篇文章主要介绍了C++获取项目路径的两种方式的相关资料,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • C++如何过滤出字符串的中文(GBK、UTF-8)

    C++如何过滤出字符串的中文(GBK、UTF-8)

    这篇文章主要给大家介绍了关于C++如何过滤出字符串的中文的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 使用C++中string实现任意长度的正小数、整数之间加减法方法实例

    使用C++中string实现任意长度的正小数、整数之间加减法方法实例

    这篇文章主要介绍了利用C++中string函数实现任意长度的正小数、整数之间加减法方法实例,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • 常用C/C++预处理指令详解

    常用C/C++预处理指令详解

    预处理指令提供按条件跳过源文件中的节、报告错误和警告条件,以及描绘源代码的不同区域的能力。使用术语“预处理指令”只是为了与 C 和 C++ 编程语言保持一致。在 C# 中没有单独的预处理步骤;预处理指令按词法分析阶段的一部分处理。
    2014-11-11
  • C字符串函数对应的C++ string操作详解

    C字符串函数对应的C++ string操作详解

    在本篇文章里小编给大家整理的是一篇关于C字符串函数对应的C++ string操作知识点内容,有兴趣的朋友们学习下。
    2020-01-01
  • windows系统下C++调用matlab程序的方法详解

    windows系统下C++调用matlab程序的方法详解

    这篇文章主要给大家介绍了关于在windows系统下C++调用matlab程序的方法,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • 深入理解C语言指针及占据内存空间

    深入理解C语言指针及占据内存空间

    这篇文章主要介绍了C语言指针及占据内存空间的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 如何在C++类的外部调用类的私有方法

    如何在C++类的外部调用类的私有方法

    这篇文章主要介绍了如何在C++类的外部调用类的私有方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • C语言实现扫雷游戏(可展开)

    C语言实现扫雷游戏(可展开)

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏,实现扫雷展开和提醒,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • Qt中控件的函数使用教程分享

    Qt中控件的函数使用教程分享

    这篇文章主要为大家详细介绍了Qt中部分控件(Text Edit编辑框、Combo Box下拉框、List Wiget和Label)函数的使用,感兴趣的小伙伴可以了解一下
    2022-12-12

最新评论