ubuntu - DST指的是什么时区?

标签 ubuntu timezone windows-subsystem-for-linux

我在 ubuntu 16.04 上使用 WSL,今天遇到了网络问题。这是日期输出的内容

$ date
Thu Sep 21 13:37:00 DST 2017

夏令时指的是什么?我知道它代表“夏令时”,但那是 not a timezone name .我怀疑这是一个人为的时区,会在春分时改变,这可以解释我今天的问题。

我能够通过将时区设置为 US/Pacific 来解决我的问题,这将输出更改为 PDT:

$ date
Thu Sep 21 13:37:00 PDT 2017

但是,我有第二台机器也有同样的问题,我很好奇它认为它在哪个时区。

有没有办法从系统中获取对应于DSTX/Y字符串(Olson数据库名称)?

最佳答案

TL;DR WSL 在 /usr/share/zoneinfo/Msft/localtime 动态生成一个假的时区信息文件,硬链接(hard link)到 /etc/本地时间。 Msft 文件使用虚构的名称 DSTSTD,它们不代表特定的时区。


实际发生的是 WSL 尝试在 Linux 中匹配您的 Windows 时区。这是一个非常重要的映射,如 here 所示(discussion)。因此,我相信 WSL 所做的不是试图击中一个不断移动的目标,而是使用 Windows API获取 Windows 时区信息,并根据该信息动态生成 timezone info file .

我相信 wslhost(特别是 C:\Windows\System32\lxss\LxssManager.dll 中的代码)在 Windows 中对您当前的时区执行此检查,并写入到 /usr/share/zoneinfo/Msft/localtime 文件。这就是为什么当 Windows 中的时区发生变化时,您会立即在已经运行的 WSL 中看到影响。但是由于没有从 Windows 时区到 Linux 或 POSIX 时区的完美映射,wslhost 可能只是wings 这个名字,这就是 DST 发挥作用的地方。

更新:实际上,我认为如果您处于夏令时时区,它只会显示“DST”,而对于非 DST 时区(我认为是标准),它只会显示“STD”。

所以“DST 代表什么时区”的答案是没有,任何试图将 /etc/localtime/usr/share 中的时区文件相匹配的 Linux 程序/zoneinfo(通过阅读链接或只是搜索),只会得到“Msft/localtime”作为答案。 “技术上准确,但完全没用”的答案。

关于ubuntu - DST指的是什么时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46352851/

相关文章:

linux - 来自 ubuntu 服务器的图像路径

ubuntu - 未满足的依赖项 - 无法安装 python-catkin-pkg

ruby-on-rails - 如何让 Rails 默认使用系统时间?

Ubuntu 18.10 - 如何安装特定版本的 gcc

ruby、gem、rbenv 命令未找到

time - 奥尔森/IANA 时区的更好名称

Java 将 DateFormat 时区设置为 GMT+1

python - Anaconda Python virtualdev 在适用于 Linux 的 Windows 子系统 (Ubuntu 14.04) 上找不到 libpython3.5m.so.1.0

python - conda environment : does each new conda environment needs a new kernel to work? 如何为我的所有环境提供特定的库?

git - 如何配置 git difftool 在 WSL 上正常工作?