关于时间函数可以参考:以前的文章
目前应用层程序打印log,一直和系统时间相隔8个小时, 但是自己编写的demo打印时间正常,
当前时间为14点多但是总是打印出来为06:xx多少。
应用程序使用time 和localtime_r 后输出时间戳,但是输出到log中,时间为06:xxx
使用demo测试结果为
seconds1=1675406462
也就是 demo用同样的函数,输出时间正常,但是应用程序有问题, 同时使用date 命令测试也是正常。
seconds2=1675406462
2023/02/03 14:41:02
当前的本地时间和日期:Fri Feb 3 14:41:02 2023
使用gdb 跟踪发现time获取到的UTC时间 使用date --date='@1675394538' 显示正常,经过local_time调用后就不正常。
也就是 应用程序中存在某些原因导致出现上述问题,应该是utc 转换为cst出现问题,
原因为:time获取到时间为UTC时间, UTC时间根据时区(北京时间)最后输出cst时间。
strace demo可知,其会调用 openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
也就是 localtimer函数会根据时区文件配置 将utc 时间转化为对应的GMT等时间。
strace 应用程序发现 其open的localtime文件不存在,就默认输出UTC---->GMT+0时间了
http代理服务器(3-4-7层代理)-网络事件库公共组件、内核kernel驱动 摄像头驱动 tcpip网络协议栈、netfilter、bridge 好像看过!!!! 但行好事 莫问前程 --身高体重180的胖子