C++时间戳转化(涉及GMT CST时区转化)
问题由来
时间戳转换(时间戳:自 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=;
p=gmtime(&t);
char s[];
strftime(s, , "%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=;
p=gmtime(&t);
char s[];
strftime(s, , "%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=;
p=gmtime(&t);
char s[];
strftime(s, , "%Y-%m-%d %H:%M:%S::%Z", p);
printf("%d: %s\n", (int)t, s); t= + ;
p=gmtime(&t);
strftime(s, , "%Y-%m-%d %H:%M:%S", p);
printf("%d: %s\n", (int)t, s);
return ;
}
结果
1408413451: 2014-08-19 01:57:31::GMT
1408442251: 2014-08-19 09:57:31
linux平台
Tue Aug 19 09:57:31 CST 2014
C++时间戳转化(涉及GMT CST时区转化)的更多相关文章
- 【转贴】一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历
原文:https://juejin.im/post/5902e087da2f60005df05c3d ------------------------------------------------- ...
- iOS开发时间戳与时间NSDate,时区的转换,汉字与UTF8,16进制的转换
http://blog.sina.com.cn/s/blog_68661bd80101njdo.html 标签: ios时间戳 ios开发时间戳 ios16进制转中文 ios开发utf8转中文 ios ...
- 深入理解windows系统内的GMT和时区
http://www.itshanghai.net/technology/wdzl_windowsxp/ UTC(Universal Time Coordinated)是通用协调时,这两者几乎是一 ...
- 与 MySQL 因“CST” 时区协商误解导致时间差了13 小时
CST 时区名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard Time (USA) UTC-05:00 / UTC-06:00 澳大利亚中部时间 C ...
- linux系统修改CST时区
================================================= [root@tzyyserveryg ~]# date -R Fri, 28 Nov 2014 08 ...
- CST时区,MYSQL与JAVA-WEB服务器时间相差13个小时的问题
最近倒腾了一台阿里云主机,打算在上面装点自己的应用.使用docker安装了安装mysql后,发现数据库的存储的时间与java-web应用的时间差8个小时,初步怀疑是docker容器时区的问题.经过一系 ...
- java时区转化相关工具方法
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java. ...
- Python 时间推进器-->在当前时间的基础上推前n天 | CST时间转化标准日期格式
由于公司任务紧迫,好久没有在园子里写自己的心得了,今天偷个闲发表点简单的代码块,在开源的时代贡献微薄力量.话不多说,直接上代码块: ]) m = ]) d = ]) the_date = dateti ...
- 用JS将指定时间转化成用户当地时区的时间
公司的项目是面向海外用户的,但是最初的设计没考虑到时差问题,存入数据库的时间都是东八区的时间,导致现在补救有点坑爹...... 有一个需求是,产品详细页需要注明此款产品的开售时间,当海外的用户来访问这 ...
随机推荐
- The income statement
The income statement measures performance over some period of time,usually a quarter or a year.The ...
- Leetcode#117 Populating Next Right Pointers in Each Node II
原题地址 二叉树的层次遍历. 对于每一层,依次把各节点连起来即可. 代码: void connect(TreeLinkNode *root) { if (!root) return; queue< ...
- ios 缓存相关信息收集
链接:http://www.cnblogs.com/pengyingh/category/353093.html 使用NSURLCache让本地数据来代替远程UIWebView请求 摘要: 原文作者: ...
- javaScript中eval()方法转换json对象
<script language="javascript"> var user = '{name:"张三",age:23,'+ 'address:{ ...
- [工作积累] GCC 4.6 new[] operator内存对齐的BUG
对于用户没有定义dctor(包括其所有成员)的类来说, new CLASS[n] 可能会直接请求sizeof(CLASS)*n的空间. 而带有dctor的 类, 因为delete[]的时候要逐个调用析 ...
- Reactor构架模式
http://www.cnblogs.com/hzbook/archive/2012/07/19/2599698.html Reactor框架是ACE各个框架中最基础的一个框架,其他框架都或多或少地用 ...
- 深入理解python之self
首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数. self名称不是必须的,在python中self ...
- 关于Web与JS
Web包含的范围比较广, JS只是代码逻辑而已. Web比如HTTP Message, SOAP Message, 浏览器流程,工具等. 不仅仅是代码.
- Asp.net MVC 实现图片上传剪切
使用技术:Asp.net MVC与jquery.uploadify,Jcrop 首先上页面 01 <strong><!DOCTYPE html> 02 <html> ...
- NodeJS异常处理uncaughtException篇
很多 NodeJS 的开发者在抱怨异常处理太麻烦,我们会通过一些列博客梳理一下NodeJS中常见的异常处理的手段. 和大多数编程语言一样,在 NodeJS 里可以通过throw抛出一个异常: thro ...