技术解析

Linux 的时间和 wine 程序的显示时间
0
2021-06-18 19:48:41
idczone

大家有没有遇到这样的问题,linux 的设置的时间如下:

       Local time: Sat 2019-07-13 16:50:42 CST
       Universal time: Sat 2019-07-13 08:50:42 UTC
             RTC time: Sat 2019-07-13 08:50:42
            Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
          NTP service: active
      RTC in local TZ: no

而用 deepin 运行的 QQ 的显示的时间是 UTC 时间. 时区不对.


Windows 时间会认为当前时间是当前市区的时间,市时区设置为东八区,时钟的 8 时就是东八区当地时间八时。而 Linux 是当前时间是 utc 时间,加上时区的 offser,也就是时钟是 8 时,加上东八区+8 小时的偏移,当前时间就是东八区当地时间 16 时。
个人觉得 wine 遵循了 Windows 这一设置导致的

我们 mysql 数据库时间我都看不懂,不是 utc 也不是北京时间,后来搜了一下貌似是世界时间 a 开头那个,不知道谁设的.

deepin 的时间有点问题。每次开了 deepin 再回 win 时间都会错误,后来换了其他 manjaro 就不会了。

怪就怪在, 我用 deeping wechat , 时间是对的, 但是用 deeping tim, 和 deeping wxwork, 时间显示就是用的 UTC


那就很诡异了,也许和 wine 官方提一下或者看看其他人有没有类似问题

你觉得 wine 有关而不是 deepin


deepin 运行 qq 底层是 wine。按道理来说,获取当前时间是需要通过 wine 的实现的 api 获取的,如果大家都使用同一个 api,不可能会有不一样的结果。很有可能有多个获取时间的 api,从而导致不同。如果和 deepin 有关的话,那 deepin 应该花了很多时间修改 wine 的内部东西。

今天加班到零晨 2 点, 把问题解决了
来更新一下这个问题的解决方法
首先, 问题产生的原因是, 我的环境变量中 /etc/profile 中, 有一个 export TZ=Asia/Shanghai , 的变. 把这个释注掉就可以了
可能的原理是, 我的桌面环境在启动时, 即使不加这个 export TZ=Asia/Shanghai , 也是能正常读到时区的. 但是, 当 /etc/profile 又多加了一次 export TZ=Asia/Shanghai 之后, 说到的时间就不准了. 从而导致 deepin-qq 和 deepin-wxwork 的时区不对了.

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服