当前位置:  技术问答>linux和unix

为了得到系统时间的而出现的奇怪问题

    来源: 互联网  发布时间:2015-07-14

    本文导语:  自定义了一个结构systime ,里面的成员和tm结构类似,只不过不是相对时间。 我想得到系统时间,遇到的问题是如果加上printf中的ctime(&the_time),则一切正确,如果没有,则得到的sys_time->hour不正确,与实际值相差16小时...

自定义了一个结构systime ,里面的成员和tm结构类似,只不过不是相对时间。
我想得到系统时间,遇到的问题是如果加上printf中的ctime(&the_time),则一切正确,如果没有,则得到的sys_time->hour不正确,与实际值相差16小时,不知道为什么,希望能够得到大家的指点,谢谢!
       time_t the_time;
       (void) time(&the_time);//the_time得到系统时间
       struct tm *tm_ptr = gmtime(&the_time);
       printf("time at Timer Sync Cmd is %s ",ctime(&the_time));
       sys_time->year =  tm_ptr->tm_year+1900);
       sys_time->mon = (tm_ptr->tm_mon+1);
       sys_time->day = (tm_ptr->tm_mday);
       sys_time->hour = (tm_ptr->tm_hour);
       sys_time->min = (tm_ptr->tm_min);
       sys_time->sec = (tm_ptr->tm_sec);

|
gdb跟踪下各变量的值看下

|
那是因为ctime()函数对参数作了处理。如果不调ctime(),则直接使用原始数据,当然不对了。
具体看看ctime()的用法就明白了。

|
楼主解释的明白,学习,呵呵,健忘了,其实以前遇到过这样的问题,类似的还有get**by**系列函数(如getservbyname)。


|
建议你使用gettimeofday();取得自1970年1月1日00时00分00秒以来所经过的秒数和微秒数.
这样的时间可以精确到微秒.
下面给你简单的算法.
sec : 秒数
usec : 微秒数
hour=((sec/3600)%24)+8; //我们所处的时区与格林威治时间的偏移量为8小时.
hour就是你要的24时制的小时值.

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 万般火急!关于java打印,已经得到printerJob实例,那么怎么通过它得到Pageable实例?
  • 怎样得到当前目录(不是在java程序中得到)
  • File类的getLastModify()得到的是长型整数,如何才能得到一个已知文件日期?
  • DateFormat的用法?比如说现在想要得到21:38,我老是得到9:38
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 我用JFileChooser得到了某个文件夹名,但如何得到此文件夹下的所有文件名
  • 苦恼的中文乱码!!!在servlet中用request.getParameter("xingming")得到的姓名域值就变成了乱码"???",更别提下面的转化函数得到的结果了。
  • linux下如何编程得到网卡的硬件描述,如得到某块网卡为“3Com 3c590/3c595....”
  • 如何得到一个终端的终端号/标示?
  • 菜问一则:请问用什么命令可得到系统路径
  • getInitParameter为什么得到null
  • IP地址数字互转 iis7站长之家
  • 怎样得到系统日期?
  • 用java.util.random怎么得到一个指定区间的随机数
  • 如何得到linux机器的时钟频率?
  • 急!如何得到snmp工具的显示数据?
  • 如何得到文本框里的自动换行标志?
  • 如何得到本机所有IP
  • bash脚本程序如何得到自身的执行路径?
  • Linux下得到进程号


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3