什么情况下用Time(NULL)这个函数时会返回错误的值?

sdpxp 2009-07-05 10:27:38
我有一个软件,需要记录采集的点的值和采集时间,程序里大量的使用了

time_t temptime=time(NULL);
mysavesturct.time=temptime; //mysavesturct是我自己定义的用语存储的结构体

获得的temptime是为了后面的存储过程做准备,但是存储的数据的时间里,经常会随机的出现1970年。

到网上一查爱知道可能是time(NULL)返回错误值的原因,参见下面这个帖子
http://hi.baidu.com/youngtiger/blog/item/dab3b92ba5b7eefbe7cd4039.html
里面有段话
“函数原型
time_t time(time_t *timer);
函数说明
返回当前日历时间。值的编码方法是未指定的。如果日历时间不可用,则返回值(time_t)(-1)。如果参数timer不是空指针,则返回值也将存储到timer所指向的对象中。”

那是什么原因导致time(NULL)返回的错误的值呢?上面说的日历时间不可用是什么意思,什么时候会导致日历时间不可用?
...全文
1554 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
rightorwrong 2009-09-03
  • 打赏
  • 举报
回复
请问解决了么
sdpxp 2009-07-07
  • 打赏
  • 举报
回复
继续等待达人的解答 谢谢楼上几位
sdpxp 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bragi523 的回复:]
何不改用其他方法试试
GetTickCount()之类得到时间
[/Quote]
GetTickCount是得到的是操作系统到现在为止的运行时间吧?和我需要的时间不是一个性质,我的程序是一个采集程序,采集一些电压值,每秒采集一个点,然后把采集的值和采集的年月日时分秒保存下来
bragi523 2009-07-06
  • 打赏
  • 举报
回复
何不改用其他方法试试
GetTickCount()之类得到时间
sdpxp 2009-07-06
  • 打赏
  • 举报
回复
继续等待达人的解答 谢谢楼上几位
zteclx 2009-07-05
  • 打赏
  • 举报
回复
应该是变量没有初始化,很多新手都爱这样错。严格按软件工程来做
skyxie 2009-07-05
  • 打赏
  • 举报
回复
你看的那个是linux/unix平台的说明吧~
MSDN中:
"Return the time as seconds elapsed since midnight, January 1, 1970. There is no error return. "

请确认你的 mysavesturct.time 都被初始化了~ 如果没有初始化就存储, 就会出现1970.1.1
sdpxp 2009-07-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zteclx 的回复:]
应该是变量没有初始化,很多新手都爱这样错。严格按软件工程来做
[/Quote]

time_t temptime=time(NULL);
mysavesturct.time=temptime; //mysavesturct是我自己定义的用语存储的结构

你看第二行算不算初始化呢?
而且保存后的数据里的时间字段1970年是随机出现的,不是规律性出现,有的时候采集了10天的数据都没有1970年,有的时候一天内的数据会出现几次1970年。
开始我以为是系统的问题,把Win 2000换成 Win XP还是这样。后来以为是硬件问题,把内存和硬盘都换了,结果还是解决不了。
sdpxp 2009-07-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 sdpxp 的帖子:]
我有一个软件,需要记录采集的点的值和采集时间,程序里大量的使用了

time_t temptime=time(NULL);
mysavesturct.time=temptime; //mysavesturct是我自己定义的用语存储的结构体

获得的temptime是为了后面的存储过程做准备,但是存储的数据的时间里,经常会随机的出现1970年。

到网上一查爱知道可能是time(NULL)返回错误值的原因,参见下面这个帖子
http://hi.baidu.com/youngtiger/blog/item/dab3b92ba5b7eefbe…
[/Quote]

你看我一楼帖子里的
mysavesturct.time=temptime; (temptime是通过它上面的time(NULL)得到的)这句不是初始化吗?我是在这句之后才存储的啊。怎么还是会出现1970?

1. 内容概要 本项目是一个支持科学函数的命令行计算器,兼容 C++98 标准。它实现了中缀表达式词法分析、后缀表达式转换与求,支持常见数学运算(如幂、三角函数、对数等)与括号优先级解析。程序还提供了角度版三角函数、角度与弧度互转功能,并支持函数调试输出与函数演示模式。 2. 适用人群 * C++ 初中级学习者,特别是希望深入理解表达式求机制者 * 需要一个可扩展的计算引擎的项目开发者 * 想通过项目实践词法分析、调度场算法、数学函数封装的开发者 * 高校学生课程设计、编译原理实践者 3. 使用场景及目标 * 实现中缀表达式的完整求解器,支持函数嵌套、优先级与结合性处理 * 提供角度与弧度版本的三角函数,以适应不同输入偏好 * 演示中缀转后缀过程,辅助编程教育与算法教学 * 提供科学函数辅助计算,如 `log`, `sqrt`, `abs`, `exp`, `ceil`, `floor` 等 4. 其他说明 * 支持函数:sin, cos, tan(弧度);sind, cosd, tand(角度) * 支持函数嵌套,如 `sin(deg2rad(30))` * 支持操作符:+, -, \*, /, ^, \*\*(幂运算)与括号优先级 * 所有函数均通过 map 注册,方便扩展与自定义 * 输入 `help` 查看支持函数,`demo` 观看转后缀过程,`quit` 退出程序 * 提示用户避免使用 `°` 符号,推荐使用角度函数代替 * 可通过 `g++ calculator.cpp -o calculator -lm` 编译(需链接数学库)
项目工程资源经过测试运行,功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会努力及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件等。资源质量优质,放心下载使用!可参考实现复现;设计报告也可借鉴此项目工程;该资源内项目代码都经过测试运行,功能ok 【项目价】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途,网络商品/电子资源资料具可复制性不支持退款。质量优质,放心下载使用。

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧