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. HUST学期助教总结

    春节还没过完,在回广州的高铁上收到是否愿意担任一次软测助教的询问.想了一天,答应了.而内心其实是有点恐慌的,有几点原因: 大学从来没有学过软件测试这门课程.对于自己的软件测试只是体系并不是很有自信. ...

  2. 【探路者】Alpha发布用户使用报告

    预期统计用户使用数量:13人. 博文内容:1用户列表.2评论列表.3统计与总结 1用户列表: 二.评论内容 用户1:1不够好看.2不应该是中国地图为背景,蛇头是人物头像的么?(那是宣传片,不是预览图) ...

  3. 《JavaScript设计模式与开发实践》——第3章 闭包和高阶函数

    闭包 变量的作用域和生存周期密切相关 高阶函数 函数可以作为参数被传递 函数可以作为返回值输出

  4. 线段树---poj2528 Mayor’s posters【成段替换|离散化】

    poj2528 Mayor's posters 题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报 思路:这题数据范围很大,直接搞超时+超内存,需要离散化: 离散化简单的来说就是只取我们需要 ...

  5. Java 更改日期格式

    import java.util.*; import java.text.*; public class TestDateFormat { public static void main(String ...

  6. lintcode-411-格雷编码

    411-格雷编码 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异. 给定一个非负整数 n ,表示该代码中所有二进制的总数,请找出其格雷编码顺序.一个格雷编码顺序必须以 0 ...

  7. lintcode-391-数飞机

    391-数飞机 给出飞机的起飞和降落时间的列表,用 interval 序列表示. 请计算出天上同时最多有多少架飞机? 注意事项 如果多架飞机降落和起飞在同一时刻,我们认为降落有优先权. 样例 对于每架 ...

  8. Hibernate:工作原理

    Hibernate的工作原理图如下所示:

  9. J2EE体系

    J2EE的概念 目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME).适用于桌面系统的J ...

  10. (打补丁 )patch

    前言: diff:逐行比较文件的不同,并且显示出来. patch: 打补丁工具,将补丁打到老文件里面,也就是diff左边的那个文件,使得老文件和新文件一样 格式:diff [选项] 老文件 新文件 格 ...