Red Hat Enterprise Linux 如何区分 EST 和 EDT

Red Hat Enterprise Linux 如何区分 EST 和 EDT

我们有一个应用程序,它应该使用本地时间(当前为 EDT)为日志添加时间戳。“/bin/date”清楚地显示“EDT”。但该应用程序却在过去一个小时添加时间戳。我猜它认为这是 EST。

/etc/sysconfig/clock 包含:ZONE="US/Eastern"

以上内容如何帮助区分 EST 和 EDT?

答案1

根据28.1.6. /etc/sysconfig/clock

ZONE=/usr/share/zoneinfo—下面的时区文件/etc/localtime是一份副本。该文件包含以下信息:

ZONE="America/New York"

请注意ZONE参数由时间和日期属性工具(system-config-date)读取,手动编辑它不会改变系统时区。

文件/etc/localtime比文件本身更重要clock:它是一个表格,计算机可以根据它确定何时在标准时间和夏令时之间切换,以及应用哪个时区偏移。请注意,此表可以被TZ环境变量,本质上是通过从包中选择不同的表tzdata(例如,如果您的应用程序作为具有自己的 shell 环境的服务帐户运行)。

如果(如评论中所建议的),你的计算机的是错误的,那么你可能会考虑配置ntp来帮助解决这个问题。

答案2

RHEL 和大多数其他 Linux 发行版中的所有日期都默认以 UTC 时间存储。这包括系统时钟。这由读取时间的例程中的时区调整。

时区偏移量通过日期进行调整,从而设置时间。如果时区设置为美国/东部,程序会要求提供当地时区时间,它会在夏令时期间读取 EDT,在标准时间期间读取 EST。如果程序要求提供系统时区的偏移量,它会在夏令时期间报告 EDT,在标准时间期间报告 EST。

您必须注意,某些应用程序不使用系统时区,尤其是 Web 应用程序。在这些情况下,您必须在应用程序中设置时区。如果您遇到某个应用程序的时间戳与实际时区相差一小时的问题,那么可能就是这种情况。

另一种可能性是参考时钟设置为错误的时间。

相关内容