根据时间戳设置系统时区

根据时间戳设置系统时区

我想根据如下所示的字符串设置系统日期和时区(Javascript 的输出new Date().toString()):

Fri Aug 01 2014 12:13:27 GMT+0200 (CEST)

在 Debian 系统上设置时区的标准方法是从 运行或tzselect符号链接区域文件。在这两种情况下,我都需要知道按大陆/城市划分的时区。/usr/share/zoneinfo/etc/localtime

有没有一种简单的方法可以仅根据 GMT 偏移量设置时区?

答案1

该日期字符串中通常没有足够的信息来了解它是在哪个时区生成的。唯一+0200告诉您有问题的时区是现在比 UTC 早两个小时。它不会告诉您偏移量是全年变化还是逐年变化,就像了解实际时区会告诉您的那样。至于这CEST部分,那些短时区名称并不意味着是唯一的(几个不同的时区可能都称自己为CEST)。

正如您在评论中指出的那样,您可以使用该字符串来猜测Etc/*始终与 UTC 保持固定偏移的时区之一,但仅此而已。而且,并非所有可能的偏移量都以Etc/*时区的形式存在,例如尼泊尔的 +0545。

由于您还在评论中指出您仅需要针对特定​​应用程序,因此也许您可能有兴趣仅针对当前进程(您的应用程序的进程)更改时区使用 TZ 环境变量?使用它你可以设置时区线:

TZ=CEST-2

您引用的日期字符串中包含了执行此操作所需的一切。 (注意偏移量上的相反符号。)

相关内容