OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7291|回复: 4

MDK中mktime()以及gmtime()函数无法使用,怎么解决呢?

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2016-8-16
在线时间
5 小时
发表于 2016-9-30 12:45:41 | 显示全部楼层 |阅读模式
7金钱
总共就7金钱,大家别嫌少啊!
先介绍一下环境,我使用的是MDK5,STM32F429平台,程序已经#include  <time.h>,在做UTC时间和UNIX时间相互转换的时候使用到mktime()和gmtime()函数,转换的代码如下:

time_t unix_timestamp=1234567890;  //UNIX时间是1234567890,对应的UTC时间应该是:2009-2-13   23:31:30
struct tm *UTC_TIME=gmtime(&unix_timestamp);  //将UNIX时间转换为UTC时间

程序编译没有问题,但是执行的结果不对,通过监视UTC_TIME的结果(见图片所示)发现其值一直是<not in scope>,貌似这个函数根本就没有执行,使用mktime()函数进行相反转换的时候也是类似的情况,请教各位高手帮忙解释并解决一下呀!

watch.png

最佳答案

查看完整内容[请看2#楼]

自己加一下时区差就是了,一定要用库函数干啥呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-9-30 12:45:42 | 显示全部楼层
自己加一下时区差就是了,一定要用库函数干啥呢?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2016-8-16
在线时间
5 小时
 楼主| 发表于 2016-9-30 22:54:38 | 显示全部楼层
折腾了一天,采用 http://www.openedv.com/forum.php ... mp;highlight=mktime  这篇帖子中的原始算法可以实现UTC时间到UNIX时间的转换,后来又回过头来直接尝试使用mktime()函数的转换,竟然也可以了,不过真的不明白刚开始为什么不能用,所以MDK中这些库函数是可以直接使用的,但MDK中监视窗口的添加的变量值有时候是不准确的(这个不知道是什么原因,已经将编译器优化级别设置为level0)
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2017-7-3
在线时间
5 小时
发表于 2017-10-13 12:13:38 | 显示全部楼层
你好,楼主,我用mktime的出来的时间戳,转换成UTC时间后,快了一个月8小时,快8小时可以理解,快一个月实在不知道什么原因
回复

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2017-10-15
在线时间
30 小时
发表于 2019-7-25 16:04:59 | 显示全部楼层
xyharmu 发表于 2017-10-13 12:13
你好,楼主,我用mktime的出来的时间戳,转换成UTC时间后,快了一个月8小时,快8小时可以理解,快一个月实 ...

mktime转换时月份要减一个月,月份时从0到11
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-6 22:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表