time_t Time::timeFromGMT(string gmt)
{
    char week[4];
    memset(week,0,4);
    char month[4];
    memset(month,0,4);
    tm date;
    sscanf(gmt.c_str(),"%3s, %2d %3s %4d %2d:%2d:%2d GMT",week,&date.tm_mday,month,&date.tm_year,&date.tm_hour,&date.tm_min,&date.tm_sec);
    date.tm_mon = getMonthByName(month);
    date.tm_wday = getWeekDayByName(week);
    date.tm_year = date.tm_year - 1900;
    return mktime(&date);
}

string Time::GMTStrFromTime(time_t time)
{
    char gmt[40];
    memset(gmt,0,40);
    tm* date = localtime(&time);
    sprintf(gmt,"%3s, %2d %3s %4d %02d:%02d:%02d GMT",getWeekDayName(date->tm_wday).c_str(),date->tm_mday,getMonthName(date->tm_mon).c_str(),date->tm_year+1900,date->tm_hour,date->tm_min,date->tm_sec);
    return string(gmt);
}

/**
* @brief [0-11]表示1到12月
* @param month
* @return
*/
int Time::getMonthByName(char* month)
{
if(strcmp(month,"Jan") == 0)
return 0;
if(strcmp(month,"Feb") == 0)
return 1;
if(strcmp(month,"Mar") == 0)
return 2;
if(strcmp(month,"Apr") == 0)
return 3;
if(strcmp(month,"May") == 0)
return 4;
if(strcmp(month,"Jun") == 0)
return 5;
if(strcmp(month,"Jul") == 0)
return 6;
if(strcmp(month,"Aug") == 0)
return 7;
if(strcmp(month,"Sep") == 0)
return 8;
if(strcmp(month,"Oct") == 0)
return 9;
if(strcmp(month,"Nov") == 0)
return 10;
if(strcmp(month,"Dec") == 0)
return 11;

return -1;
}

/**
* @brief [0-11]表示1到12月
* @param month
* @return
*/
string Time::getMonthName(int month)
{
switch(month)
{
case 0:return "Jan";
case 1:return "Feb";
case 2:return "Mar";
case 3:return "Apr";
case 4:return "May";
case 5:return "Jun";
case 6:return "Jul";
case 7:return "Aug";
case 8:return "Sep";
case 9:return "Oct";
case 10:return "Nov";
case 11:return "Dec";
default:return " ";
}
}

/**
* @brief [0-6]表示周日到周六
* @param wday
* @return
*/
int Time::getWeekDayByName(char* wday)
{
if(strcmp(wday,"Sun") == 0)
return 0;
if(strcmp(wday,"Mon") == 0)
return 1;
if(strcmp(wday,"Tue") == 0)
return 2;
if(strcmp(wday,"Wed") == 0)
return 3;
if(strcmp(wday,"Thu") == 0)
return 4;
if(strcmp(wday,"Fri") == 0)
return 5;
if(strcmp(wday,"Sat") == 0)
return 6;

return -1;
}

/**
* @brief [0-6]表示周日到周六
* @param wday
* @return
*/
string Time::getWeekDayName(int wday)
{
switch(wday)
{
case 1:return "Mon";
case 2:return "Tue";
case 3:return "Wed";
case 4:return "Thu";
case 5:return "Fri";
case 6:return "Sat";
case 0:return "Sun";
default:return " ";
}
}

time_t与GMT格式互转的更多相关文章

  1. Java string和各种格式互转 string转int int转string

    Java string和各种格式互转 string转int int转string 简单收集记录下 其他类型转String String s = String.valueOf( value); // 其 ...

  2. BitMap 图片格式与Base64Image格式互转方法

    BitMap 图片格式与Base64Image格式互转方法 /// <summary> /// 图片转为base64编码的字符串 /// </summary> /// < ...

  3. JS时间格式 GMT格式转换

    JavaScript时间格式转换总结 1.当前系统区域设置格式(toLocaleDateString和toLocaleTimeString) 例子:(new Date()).toLocaleDateS ...

  4. 【转】OpenCV与CxImage转换(IplImage)、IplImage QImage Mat 格式互转

    最近由于在项目中用到了Opencv库,但是为了更好的显示图像还是使用了Cximage库,它可以快捷地存取.显示.转换各种图像.Opencv库用于高级图像处理与识别.为了使Cximage图像与Openc ...

  5. JS时间处理由CST格式转成GMT格式时间

    问题描述:js接收java后台的时间数据时,时间格式的CST时间,而js默认的是GMT时间格式,js 需要对这个时间进行处理才能使用,具体处理方法如function dateToGMT(sDate){ ...

  6. pvr.ccz 与 png 格式 互转的解决方案

    pvr.ccz与png互转 pvr是苹果的一种图片格式,我们需要转成png,最简单的办法就是用TexturePacker. 准备工作 TexturePacker :http://www.codeand ...

  7. 图像RGB2YUV与YUV2RGB格式互转介绍

    1 YUV格式与RGB格式说明 由于不同国家的电视信号系统支持的图像格式不同,有YUV格式成像,也有RGB格式成像,因此为了保证兼容性,需要进行RGB与YUV格式的互转. 另外YUV格式具有亮度信息和 ...

  8. iOS dateformatter设置GMT格式时间--iOS开发系列---项目中成长的知识四

    今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得! 今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间! 格式要 ...

  9. 使用Python3将word文档和pdf电子书进行格式互转(兼容Windows/Linux)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_96 一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些w ...

随机推荐

  1. AppCan 之初体验

    平台概述 什么是AppCan 移步这里,楼主的一句话:可以匹敌 Phonegap .Titanium .Sencha Touch .MUI .ImagApp.Nitrous .apicloud .起步 ...

  2. C/C++学习计划

    学习内容:C语言程序设计精髓/计算机程序设计(C++) 学习理由:基础比较薄弱,想先打好基础. 时间安排:每天学习两课时. mooc地址:http://www.icourse163.org/home. ...

  3. MOOK学习

    课程选择及其理由 课程:c++程序设计 教师:魏英 学校:西北工业大学 总共:48讲 选择理由:我其实之前找了好几个,但由于小白,思考了下(迷茫,感觉好像都不错),然后看了一下大家都选择了西北工业大学 ...

  4. lintcode-202-线段树的查询

    202-线段树的查询 对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值. 为Se ...

  5. iOS- 如何建立索引实现本地文本搜索引擎,允许容错搜索?

    1.前言 实现一个本地搜索引擎,允许容错搜索,也就是搜索结果不需要和搜索的关键字完全精准匹配.比如,搜索”eric wang“,搜索结果可以包括Erica Watts等等.搜索效率十分高. 这里我们需 ...

  6. 浅谈 Sql Server 触发器

    一.触发器概念 1.1.触发器特征         1.1.1.触发器是在对表进行增.删.改时,自动执行的存储过程.触发器常用于强制业务规则,它是一种高级约束,通过事件进行触发而被执行.        ...

  7. HostsConfig文件修改器

    Hosts文件修改器 HostsConfig v1.1 免费版 最近工作需要,经常需要更换各种域名的内外网配置,频繁的修改HOSTS文件,很多的时间都用在的修改HOSTS文件上,工作效率大大降低,课余 ...

  8. Additinal Dependencies和#pragma comment(lib,"*.lib")的分析

     网上.一些书上也写道,这两种方式作用一样.其实仔细分析,它们两者还是有非常大的差异的. Additinal Dependencies和#pragma comment(lib,"*.lib& ...

  9. jQuery表单验证组件BootstrapValidator

    github:https://github.com/nghuuphuoc/bootstrapvalidator 参考博客:JS组件系列——Form表单验证神器: BootstrapValidator ...

  10. HDU 4758——Walk Through Squares——2013 ACM/ICPC Asia Regional Nanjing Online

    与其说这是一次重温AC自动机+dp,倒不如说这是个坑,而且把队友给深坑了. 这个题目都没A得出来,我只觉得我以前的AC自动机的题目都白刷了——深坑啊. 题目的意思是给你两个串,每个串只含有R或者D,要 ...