使用gmtime函数或localtime函数将time_t类型的时间日期转换为structtm类型:

使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年、月、日等数据。gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读。

gmtime函数的原型如下:

struct tm *gmtime(time_t*timep);

localtime函数的原型如下:

struct tm *localtime(time_t*timep);

将参数timep所指的time_t类型信息转换成实际所使用的时间日期表示方法,将结果返回到结构tm结构类型的变量。

gmtime函数用来存放实际日期时间的结构变量是静态分配的,每次调用gmtime函数都将重写该结构变量。如果希望保存结构变量中的内容,必须将其复制到tm结构的另一个变量中。

gmtime函数与localtime函数的区别:

gmtime函数返回的时间日期未经时区转换,是UTC时间(又称为世界时间,即格林尼治时间)。

localtime函数返回当前时区的时间,

转换日期时间表示形式time_t类型转换为structtm类型示例:

#include

#include

int main()

{

char*wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};/*指针字符数组*/

time_t t;

struct tm *p;

t=time(NULL);/*获取从1970年1月1日零时到现在的秒数,保存到变量t中*/

p=gmtime(&t); /*变量t的值转换为实际日期时间的表示格式*/

printf("%d年%02d月%02d日",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);

printf(" %s ", wday[p->tm_wday]);

printf("%02d:%02d:%02d\n", p->tm_hour,p->tm_min, p->tm_sec);

return 0;

}

注意:p=gmtime(&t);此行若改为p=localtime(&t);则返回当前时区的时间

②     使用mktime函数将structtm类型的时间日期转换为time_t类型:

表头文件

#include

定义函数

time_t mktime(strcut tm *timeptr);

函数说明

mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。

返回值

返回经过的秒数。

日期转换为秒数示例:

#include

#include

int main()

{

time_t t;

struct tm stm;

printf("请输入日期时间值(按yyyy/mm/dd hh:mm:ss格式):");

scanf("%d/%d/%d%d:%d:%d",&stm.tm_year,&stm.tm_mon,&stm.tm_mday,

&stm.tm_hour,&stm.tm_min,&stm.tm_sec);

stm.tm_year-=1900; /*年份值减去1900,得到tm结构中保存的年份序数*/

stm.tm_mon-=1;    /*月份值减去1,得到tm结构中保存的月份序数*/

t=mktime(&stm);  /* 若用户输入的日期时间有误,则函数返回值为-1*/

if(-1==t)

{

printf("输入的日期时间格式出错!\n");

exit(1);

}

printf("1970/01/01 00:00:00~%d/%02d/%02d%02d:%02d:%02d共%d秒\n",

stm.tm_year+1900,stm.tm_mon,stm.tm_mday,

stm.tm_hour,stm.tm_min,stm.tm_sec,t);

return 0;

}

转:http://www.360doc.com/content/11/0720/14/1317564_134702417.shtml

转载于:https://www.cnblogs.com/zl-graduate/p/6061135.html

C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换相关推荐

  1. rsa1024 公钥c语言程序,两种方式生成RSA 公钥私钥

    两种方式-生成RSA256私钥公钥 两种方式生成私钥公钥 1.ssh-keygen 方式 生成加密长度4096位密钥 生成私钥:ssh-keygen -t rsa -b 4096 -f ${priva ...

  2. 【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  3. c语言冒泡排序法程序填空_【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  4. 冒泡排序的两种方式c语言代码,【C语言】两种方式实现冒泡排序算法

    题目要求 编写一个C语言程序,实现基本的冒泡排序算法. 算法 冒泡排序,用一句话来总结: 一组数中,相邻的两个数进行比较.交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序 要想对N个数字进行 ...

  5. 浅析Java语言中两种异常的差别

    Java提供了两类主要的异常:runtime exception和checked exception.所有的checked exception是从java.lang.Exception类衍生出来的,而 ...

  6. r如何连接oracle,R语言 R两种方式连接Oracle

    关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 一.通过RODBC包连接oracle 1.首先在本机找到ODBC数据源,点击添加,按照自己的oracle,填写下面三个位置 2.填写完之后,点 ...

  7. mysql数据存储方式_数据存储在mysql的两种方式

    数据存储在mysql的两种方式 发布时间:2020-05-12 16:16:25 来源:亿速云 阅读:250 作者:三月 下文主要给大家带来数据存储在mysql的两种方式,希望这些内容能够带给大家实际 ...

  8. 原生js更改html,原生js更改css样式的两种方式

    原生js更改css样式的两种方式 发布时间:2020-08-30 01:46:17 来源:脚本之家 阅读:148 作者:外婆的彭湖湾 下面我给大家介绍的是原生js更改CSS样式的两种方式: 1. 通过 ...

  9. putextra 传递对象_intent.putextra用法 使用Intent传递对象的两种方式 - 电脑常识 - 服务器之家...

    intent.putextra用法 使用Intent传递对象的两种方式 发布时间:2017-05-22 来源:服务器之家 Intent 的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播. ...

最新文章

  1. 【报错笔记】maven项目启动时报错
  2. mikrotikROS系统的几种安装方法
  3. 阿里云大数据利器Maxcompute-使用mapjoin优化查询
  4. html5如何新建定义站点,HTML5技术教程:创建新作品_HTML5教程_创建作品_添加元素_课课家...
  5. 消费新品周报 | 歌帝梵携手大白兔推出全冰品系列;MK推出新一代智能触屏腕表...
  6. android中关于keytool 错误:java.lang.Exception:密钥库文件不存在: 解决步骤
  7. macOS 安卓模拟器 Genymotion 安装
  8. WinUsb_ReadPipe和WinUsb_WritePipe函数功能理解
  9. 不习惯的 Vue3 起步六 の Echarts绘制下钻地图
  10. jni调用java数组导致VM aborting,安卓程序莫名闪退
  11. Linux下按照时间段过滤日志
  12. IG-REPORT企业智能报表 测试记录
  13. 股票交易下单接口-接口设计规则
  14. 对抗网络之PG-GAN,无条件下生成更真实的人脸图像[3]
  15. linux查看是否已安装GCC及安装GCC
  16. 外刊01 How is COVID-19 affecting our mental health?
  17. 预装Windows 7系统如何验证系统正版授权
  18. 高斯玻色采样enhance量子近似优化算法
  19. 双系统win10自动改动EFI启动顺序解决方案
  20. 动森amiibo数据_动森岛屿规划神器来了!还有 6 款超实用的辅助工具

热门文章

  1. js设置ajax执行顺序,2018-03-10fiddler替换js、js的ajax方法执行顺序
  2. Arm v9的牙膏挤出来了,超大核机器学习性能x2,小核4年来终于更新
  3. 这家刚拿了1亿美元的基金会,要证明“21世纪是生物的世纪”
  4. 图神经网络世界冠军团队手把手授课,7天搞定图神经网络!
  5. 5000量子比特的商用计算平台发布!D-Wave:这是商业应用的唯一选择
  6. GAN不只会造假:捕获数据中额外显著特征,提高表征学习可解释性,效果超越InfoGAN | IJCAI 2020...
  7. centos 的epel源配置
  8. w3m - 命令行下的浏览器
  9. 【IBM Tivoli Identity Manager 学习文档】11 TIM设计思路介绍
  10. 您的安全设置不允许网站使用安装在您的计算机上的ActiveX控件的解决方法