骑马钓鱼 2016-11-03 07:28 采纳率: 100%
浏览 3569
已采纳

嵌入式Linux下时区问题,创建的文件时间在pc上看差8个小时,求解决方法!!

在嵌入式Linxu平台下,挂在u盘,在u盘中创建的文件,拿到Linux pc和window pc下看到文件的修改时间、window下文件的创建时间都是 8个小时前的。

开发板 gcc4.8.3+uClibc 0.9.32.1
已经尝试过的方法如下:
1.配置/etc/TZ文件内容 为CST-8;/home目录为当前u盘挂载点
/home # cat /etc/TZ
CST-8
/home # date -R
Thu, 03 Nov 2016 12:01:18 +0800
/home #
/home # date -u
Thu Nov 3 04:01:20 UTC 2016
/home # echo test > test1.txt
/home # ls -l test1.txt
-rwxr-xr-x 1 root root 5 Nov 3 12:01 test1.txt
/home # stat test1.txt
File: test1.txt
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: 804h/2052d Inode: 118 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-03 12:01:36.000000000
Modify: 2016-11-03 12:01:36.000000000
Change: 2016-11-03 12:01:36.000000000

将U盘文件分别拿到linxu和window pc看:
图片说明

ubuntu下:
stat test1.txt
文件:"test1.txt"
大小:5 块:8 IO 块:4096 普通文件
设备:814h/2068d Inode:676 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ test) Gid:( 1000/ test)
最近访问:2016-11-03 12:08:33.000000000 +0800
最近更改:2016-11-03 04:01:36.000000000 +0800
最近改动:2016-11-03 04:01:36.000000000 +0800

创建时间:-

2.将linux pc上/usr/share/zoneinfo/Asia/Chongqing 时区文件连接到开发板 /etc/localtime
系统设置正确的时间后,在开发板上看到
/home # ls -l /etc/localtime
lrwxrwxrwx 1 root root 23 Nov 3 12:17 /etc/localtime -> /mnt/zoneinfo/Chongqing
/home # date -R
Thu, 03 Nov 2016 12:19:11 +0800
/home # date -u
Thu Nov 3 04:19:14 UTC 2016
/home # echo test2 > test2.txt
/home # ls -l test2.txt
-rwxr-xr-x 1 root root 6 Nov 3 12:19 test2.txt
/home # stat test2.txt
File: test2.txt
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 804h/2052d Inode: 50 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-03 12:19:31.000000000
Modify: 2016-11-03 12:19:31.000000000
Change: 2016-11-03 12:19:31.000000000

把test2.txt拿到pc看,结果同条件1下一样,时间同样是8个小时之前
图片说明

3.直接在ubuntu上挂载u盘
echo test3 > test3.txt
ls -l test3.txt
-rw-r--r-- 1 test test 6 11月 3 14:26 test3.txt

文件:"test3.txt"
大小:6 块:8 IO 块:4096 普通文件
设备:814h/2068d Inode:1310 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ test) Gid:( 1000/ test)
最近访问:2016-11-03 14:26:13.000000000 +0800
最近更改:2016-11-03 14:26:13.000000000 +0800
最近改动:2016-11-03 14:26:13.000000000 +0800

创建时间:
图片说明

在window pc是查看是正确的, 这里在ubuntu上创建的文件比在开发板上的文件多了 +0800时区信息??
这个不知道是在uClibc库里面添加的还是在内核里面添加的?
同样将ubunt下创建的文件test3.txt拿到开发板下面去看,时间比真实的时间多了 8个小时
/home # ls -l test3.txt
-rwxr-xr-x 1 root root 6 Nov 3 2016 test3.txt
/home # stat test3.txt
File: test3.txt
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 804h/2052d Inode: 42 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-03 08:00:00.000000000
Modify: 2016-11-03 22:26:12.000000000
Change: 2016-11-03 22:26:13.000000000

通过对比发现,开发板上文件实际记录的时间应该是uct时间,而pc上实际记录的时间应该是rtc的时间,后面实验直接把rtc时间当作utc时间设置到开发板的os上,新创建出来的文件在pc看就正确了,但是由于应用上一些原因现在不允许这样使用,请教大神怎么能解决这个问题?

  • 写回答

4条回答 默认 最新

  • oyljerry 2016-11-03 07:58
    关注

    这个时区的区别,你如果不能修改时区一致。那么可以自己根据时区之间的差值来对时间做一个偏移量的处理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?