如何通过 zic 时区编译器纠正错误的时区偏移

如何通过 zic 时区编译器纠正错误的时区偏移

我有一台运行 iOS 3.1.3 的 iPod touch(第二代)(因为它在 iOS 4 上运行不佳),当我将其连接到计算机时,时钟设置总是比实际时间提前一小时。

当我通过 SSH 连接到设备时:

  • date "+%Z"返回ARST的是正确的(我在阿根廷布宜诺斯艾利斯)
  • date "+%z"结果是-0200,即错误的并且应该是-0300

我的问题是:如何将时区偏移修正为实际值?

我发现了对“IANA 时区数据库”的提及和引用zic。 我试图找到已经编译的文件来替换整个“zoneinfo”文件夹,但我找到的下载似乎使用了与 iPod 上不同的文件夹结构。zdump

编辑:我正在寻找一种编辑或更新时区信息的方法,以便正确配置我的时区“ARST”。我发现了几个对名为 的编译器的引用zic。和
都存在于设备上,这让我相信它可以通过 SSH 和 UNIX 命令来完成。ziczdump

答案1

我找到了解决方案这里

但是,tzdata 源已更改其 URI。现在可以在以下位置找到它:ftp://ftp.iana.org/tz/或者http://www.iana.org/time-zones了解更多信息。

  1. 在本例中,下载更新的 tzdata 文件, tzdata2012j.tar.gz并将其解压到临时文件夹中。

  2. 通过 SSH 连接到 iPod 并将解压的文件复制到 iPod。我选择User/Downloads并创建了一个新的(临时)文件夹tzfix,将所有内容复制到其中。

  3. 之后,使用命令进行编译:zic southamerica,这需要几秒钟。

  4. 然后,使用以下命令复制该文件:

    cp /usr/share/zoneinfo/America/Argentina/Buenos_Aires /usr/share/zoneinfo/America/Buenos_Aires

  5. 现在测试date "+%z"date "+%Z"返回正确的值:-0300并且ART

最后!我可以将时钟设置为正确的时间,而不会 Twitter 拒绝登录并且 Google 身份验证器抛出错误的身份验证代码。

编辑:目前还有另一个单独的数据库需要更新:ICU 数据库。它使用相同的 tzdata 并且需要编译成/usr/share/icu/icudt40l.dat.这是必要的,以便时钟和日历应用程序显示正确的时间。

相关内容