【问题标题】:how to get local date/time in linux terminal while server configured in UTC/different timezone?当服务器配置为 UTC/不同时区时,如何在 linux 终端中获取本地日期/时间?
【发布时间】:2016-07-28 19:28:55
【问题描述】:

当服务器配置为 UTC 或不同时区时,如何在 linux 终端中获取本地日期和时间?

这是我现在得到的,但我想在本地时区看到。例如:PST/PDT。

[jenkins@myServer ~]$ date
Thu Jul 28 18:16:48 UTC 2016

我不希望使用 hwclock 更改系统时间或更新 /etc/localtime。只是想为用户更改它。

另外,请告诉我 - 如何为以后的登录保留它。

【问题讨论】:

    标签: linux bash terminal


    【解决方案1】:

    使用TZ 环境变量将所需的时区传递给date

    TZ=<timezone> date
    

    您可以在/usr/share/zoneinfo/ 目录和子目录中找到可用的时区。例如,/usr/share/zoneinfo/America/New_York 定义了TZ=America/New_York

    示例:

    $ date                         
    Fri Jul 29 06:31:53 BDT 2016
    
    $ TZ='America/New_York' date   
    Thu Jul 28 20:31:58 EDT 2016
    
    $ TZ='America/Los_Angeles' date
    Thu Jul 28 17:31:54 PDT 2016
    

    【讨论】:

      【解决方案2】:

      对于当地时间,请使用“日期”。对于 UTC 时间,使用“date -u”。请注意,如果您在服务器终端中使用“日期”,它会返回服务器本地时间。

      【讨论】:

      • 这是如何吸引最多投票的?它不仅没有回答手头的实际问题,还建议改用服务器上的本地时间。后者非常愚蠢 - 不必在一个本地 shell 中设置 TZ 的便利性被 UTC 没有夏令时这个愚蠢问题的事实所抵消......跨度>
      • 我同意@tink,我的主机/开发框始终设置为 UTC,所以我的所有日​​志都默认为 UTC,这样我就可以比较不同时区中各个框的时间。我正在寻找一种方法来根据我当前的互联网提供商说我可能在哪个时区。如果这不起作用,那么我只需要对 GMT+4 进行硬编码并处理夏令时手动基础。
      【解决方案3】:

      您可以通过覆盖打印日期的进程的TZ 环境变量来显示本地时间。 POSIX says这个话题很多,开头是

      这个变量代表时区信息。名为TZ的环境变量的内容将被ctime()ctime_r()localtime()localtime_r()strftime()、@987654332使用@、函数和各种实用程序,以覆盖默认时区。

      传统的 3 字符时区值在不久前(或多或少)标准化为弃用 3 字符形式,使用组合标准和夏令时形式。 PDT 的首选格式是 PST8PDT

      有一个page on VMware 显示名称并提到它们在Linux 上使用;您可能会注意到其中很少有 3 个字符的形式(除了通用的 UTC+offset)。

      进一步阅读:

      【讨论】:

      • 感谢您的链接。我喜欢 VMWare 的 Valid timeZone values 链接。
      • 我正在尝试alias ldate='TZ=America/New_York date'(在 UNIX 上)。我希望这能自动处理夏令时问题。
      猜你喜欢
      • 2021-09-26
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 2016-04-04
      • 2012-11-08
      • 1970-01-01
      相关资源
      最近更新 更多