c - 如何获取时区的相应位置

标签 c linux

我有一个要求,我需要根据特定文件内指定的时区更改系统的时区,如果文件内指定的时区是“PDT”,我在/中找不到“PDT” usr/share/zoneinfo 而不是它被命名为“PST8PDT”。有没有我可以 grep 并获取此信息的文件。 注意:文件中指定的时区可以是任何内容。

我需要将 TZ 变量设置为文件中指定的时区,该文件必须位于/usr/share/zoneinfo 目录下。

最佳答案

3 个字母的时区名称本身是不明确的。示例:IST 是印度/爱尔兰/以色列标准时间。没有可以下载的“标准”映射,因为一般情况下不存在这样的映射。

您需要在 zoneinfo 中创建一个从 3 个字母的时区到标准时区名称的映射表。

为此,您必须检查您的输入文件,以确定 在您的输入数据中出现的 完整 3 字母时区缩写集。无论输入的时区缩写是否有歧义,您都必须这样做。

然后,如果其中任何一个是模棱两可的,那么您必须为每个模棱两可的缩写决定它指的是哪个 zonnifo 时区。因此,例如,在您的表中,IST 行将指向 Asia/Kolkata 的区域信息名称。

这里没有捷径。您必须创建和维护映射,并且必须解决歧义。

关于c - 如何获取时区的相应位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26087962/

相关文章:

c - 我将如何 'spawn' 或按程序实例化多个生物?

linux - 如何启动嵌入在 Eclipse 插件中的可执行文件?

linux - 我不小心执行了 ulimit -r1,并且想返回 ulimit -r90+,我该怎么做?

python - 动态加载两个 libpython 版本

c - 检测字节顺序

c - 将未知长度的格式化数据写入字符串(C编程)

c - c 中的静态内联函数

python - 在 cygwin 中列出文件内容时遇到问题

linux - 如何在 Linux (Fedora) 中禁用环回接口(interface)?

linux - 在当前目录和子目录中查找文件类型,包括隐藏文件。 (家庭作业)