gpt4 book ai didi

datetime - 在 Ubuntu 18.04 上通过命令行启用/禁用夏令时

转载 作者:行者123 更新时间:2023-12-04 18:28:57 31 4
gpt4 key购买 nike

注意:通过“禁用”夏令时,我的意思是系统时钟忽略夏令时的任何时间更改(即,如果 DST 被禁用,那么时钟将不会在三月“向前”一个小时,也不会“后退”11 月的一个小时。

我正在设计一个在 Ubuntu 18.04 上运行的 Qt 应用程序,我需要能够设置系统时区、时间和日期。

对于设置时间和日期,我可以很容易地使用 timedatctl修改系统设置。但是,此命令似乎确实能够禁用夏令时。它会根据时区和日期报告 DST 是否为“事件”,但您无法禁用/启用此设置。

在 Windows 上,我使用了 tzutil.exe设置 DST 启用或不使用 dst_off 标志。有没有与 Ubuntu 等价的东西?

最佳答案

我将从时区的角度回答这个问题。

禁用 DST 通常不是一件好事。这些功能忽略了时区的现实。时区由世界各地的各个政府定义,而这些政府决定 DST 何时何地生效。

例如,我位于美国华盛顿州的雷德蒙德。根据美国法律,它位于太平洋时区,标准时间为 UTC-8,白天为 UTC-7。美国法律目前允许各州选择退出夏令时,亚利桑那州和夏威夷已经这样做了。但华盛顿没有,因此夏令时适用于我这里。现在(7 月)在我写这篇文章时是太平洋夏令时间 11:00。我不能自己决定它的太平洋标准时间 10:00。我必须搬迁到不同的时区才能做到这一点。

在包括 Ubuntu 在内的大多数系统中使用的 IANA time zone database(TZDB、Olson 等)中的时区定义了世界各地至少从 1970 年起本地时间一致的不同区域。如果有共享相同标准时间的区域但不同的是他们是否获得 DST,或者何时适用 DST,然后他们在 TZDB 中获得自己不同的条目。换句话说,说“我想在没有 DST 的情况下进入 America/Los_Angeles”是没有意义的,因为太平洋时区没有地方可以这样做。如果您在皮特凯恩群岛(UTC-8 没有 DST),那么您只需使用 Pacific/Pitcairn

也许是一个更清晰的例子:美国山区时间的大部分时间使用 MST (UTC-7) 和 MDT (UTC-6),它们获得 TZDB 标识符 America/Denver 。亚利桑那州大部分不使用夏令时,全年使用 MST (UTC-7),因此它在 TZDB 中获得了自己的标识符 America/Phoenix

那么你可能会问,为什么 Windows 有“禁用 DST”功能?我可以公开谈论的原因有几个(披露:我在微软工作,偶尔在这个领域工作)。

  • Windows 时区功能最初是使用 Windows NT 创建的。当时,Olson 数据库已经存在,但并不像今天这样无处不在。 Microsoft 决定创建自己的实现,因此至今有两种不同的时区数据来源。 TZDB 和微软。
  • 以前是Windows时区数据没有覆盖全局的情况。因此,一些 Windows 用户不得不依靠此功能来获得准确的时间。这与 an update in June 2016 发生了巨大变化,以符合微软的使命宣言“......地球上的每个人和每个组织......”。今天,有 promise 和 policy 以确保准确的时区数据。
  • 当政府决定对其时区进行更改(制定 DST、暂停 DST、更改 DST 日期或时间、更改标准时间偏移等)时,立法者有时会犯一个关键错误,即没有提供足够的提前期(see my blog post on this subject )。发生这种情况时,Microsoft 可能会就如何获取正确的本地时间提供建议的临时指导,直到可以提供更新为止。此类指导可能包括禁用 DST 或切换到不同的时区。这些建议总是临时的,因此该功能是否需要存在变得有争议。

  • 一般来说,大多数 Windows 用户永远不应该禁用 DST。如果他们发现自己需要这样做以获取正确的本地时间(上述罕见情况除外),他们可能只是一开始就没有将时区设置为正确的条目。

    Ubuntu 和其他操作系统上的 TZDB 时区往往比 Windows 具有更短的更新周期,因此不会受到短期通知更改的严重影响。

    关于datetime - 在 Ubuntu 18.04 上通过命令行启用/禁用夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56975088/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com