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. Scrum立会报告+燃尽图(十月二十二日总第十三次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...

  2. 软件工程android项目简介

    我们的程序名字叫做“有爱”APP,英文名“you i”.意味着you and i,是一款旨在两人聊天,生活日记,记账工具,和对方通知的小软件. 1.首先我们的创意解决了用户什么需求? 答:在当今信息爆 ...

  3. 2018软工实践—Alpha冲刺(6)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 测试服务器并行能力 学习MSI.CUDA ...

  4. 第二次作业——个人项目实战(sudoku)

    第二次作业--个人项目实战(sudoku) 一.作业要求地址 第二次作业--个人项目实战 二.Github项目地址 softengineering1--sudoku 三.PSP表格估计耗时 PSP2. ...

  5. oracle与DB2的一些架构

    首先,我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处.图 1 展示了 Oracle 的系统结构.将该图与 图 2 进行比较,后者显示了 DB2 的系统结构.在阅读本文的时候,为 ...

  6. openssl 基本加密

    openssl命令行工具详解(openssl的命令众多,请酌情处理与记忆) 在命令行输入:openssl asdf,可以显示openssl的命令说明   1:Standard commands(标准命 ...

  7. 一个form表单,多个提交按钮

    技巧就是把提交的input的类型改成button!这样就可以实现多个按钮提交! 以下是案例: <form action="" id="tijiao"> ...

  8. jdbc 小结

    1,PreparedStatement/Statement区别: 1,防止sql注入式攻击(sql注入:就是通过非正常手段(比如在url中添加参数)),将sql文执行(比如or 1=1) 2,Prep ...

  9. git管理策略

    master:生产环境,用于发布正式稳定版 release-*.*:预发布分支,发布稳定版之前的正式分支 develop:开发分支,测试环境中使用 feature/who xxx:功能分支,功能未开发 ...

  10. 【转】史上最浅显易懂的Git教程!

    之前一直在找git的学习教程,网上搜到很多,但是大多数写的都非常简单或者混乱,你知道技术男的思维就是以为他抛一个专业术语出来,以为你都懂……或者简单写两句,插个图,他觉得他懂了,你也能懂,事实上初学者 ...