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++程序设计有所帮助。

相关文章

  • 深入第K大数问题以及算法概要的详解

    深入第K大数问题以及算法概要的详解

    本篇文章是对第K大数问题以及算法概要进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 深入了解C语言中的字符串和内存函数

    深入了解C语言中的字符串和内存函数

    本文主要带大家来学习一些常用的库函数。有了这些库函数,我们可以更加方便地操作字符串和内存,从而提升我们的编码效率。话不多说,我们开始吧
    2022-11-11
  • C++深入探究继承的概念与使用

    C++深入探究继承的概念与使用

    继承是C++面向对象编程中的一门。继承是子类继承父类的特征和行为,或者是继承父类得方法,使的子类具有父类得的特性和行为。重写是子类对父类的允许访问的方法实行的过程进行重新编写,返回值和形参都不能改变。就是对原本的父类进行重新编写,但是外部接口不能被重写
    2022-05-05
  • 带头结点的链表的基本操作(超详细)

    带头结点的链表的基本操作(超详细)

    链表是一种动态分配空间的存储结构,能更有效地利用存储空间,通过对单链表基本操作的代码实现,我深刻领悟到以“指针”指示元素的后继,在插入或删除元素时不需要移动元素
    2023-07-07
  • 基于C语言实现点餐系统

    基于C语言实现点餐系统

    这篇文章主要为大家详细介绍了基于C语言实现点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • 使用C语言操作文件的基本函数整理

    使用C语言操作文件的基本函数整理

    这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下
    2015-08-08
  • C语言零基础精通变量与常量

    C语言零基础精通变量与常量

    这篇文章主要为大家详细介绍了C语言的变量和常量,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-04-04
  • C语言中四种取整方式,取余/取模运算以及负数取模问题详解

    C语言中四种取整方式,取余/取模运算以及负数取模问题详解

    这篇文章主要介绍了C语言中四种取整方式及负数取模问题,包括了算法的分析与改进,是很多程序设计竞赛中常见的算法,需要的朋友可以参考下
    2021-09-09
  • 详解DAG上的DP

    详解DAG上的DP

    DAG:有向无环图。DAG是学习动态规划的基础,很多问题都可以直接转化为DAG上的最长路、最短路或路径计数问题。本文将详细介绍DAG上的DP。
    2021-05-05
  • php5系列的apache远程执行漏洞攻击脚本

    php5系列的apache远程执行漏洞攻击脚本

    这篇文章主要介绍了php5系列的apache远程执行漏洞攻击脚本,需要的朋友可以参考下
    2014-06-06

最新评论