栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何找到当前系统时区?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何找到当前系统时区?

这是很难得到一个可靠的答案。依靠这样的事情

/etc/timezone
可能是最好的选择。

(如其他答案中所建议的,变量

tzname
和的
tm_zone
成员
struct tm
通常包含
GMT
/
BST
等缩写,而不是问题中要求的Olson时间字符串)。

  • 在基于Debian的系统(包括Ubuntu)上,
    /etc/timezone
    是一个包含正确答案的文件。
  • 在某些基于Redhat的系统(至少包括某些版本的CentOS,RHEL,Fedora)上,您可以使用on上的readlink()获得所需的信息
    /etc/localtime
    ,它是(例如)的符号链接
    /usr/share/zoneinfo/Europe/London
  • OpenBSD似乎使用与RedHat相同的方案。

但是,上述方法存在一些问题。该

/usr/share/zoneinfo
目录还包含诸如
GMT
和的文件
GB
,因此用户可能会将符号链接配置为指向该目录。

同样,没有什么可以阻止用户将正确的时区文件复制到那里,而无需创建符号链接。

解决这个问题的一种方法(似乎可以在Debian,RedHat和OpenBSD上使用)是将/ etc / localtime文件的内容与/ usr /
share / zoneinfo下的文件进行比较,并查看哪些匹配:

eta:~% md5sum /etc/localtime410c65079e6d14f4eedf50c19bd073f8  /etc/localtimeeta:~% find /usr/share/zoneinfo -type f | xargs md5sum | grep 410c65079e6d14f4eedf50c19bd073f8410c65079e6d14f4eedf50c19bd073f8  /usr/share/zoneinfo/Europe/London410c65079e6d14f4eedf50c19bd073f8  /usr/share/zoneinfo/Europe/Belfast410c65079e6d14f4eedf50c19bd073f8  /usr/share/zoneinfo/Europe/Guernsey410c65079e6d14f4eedf50c19bd073f8  /usr/share/zoneinfo/Europe/Jersey410c65079e6d14f4eedf50c19bd073f8  /usr/share/zoneinfo/Europe/Isle_of_Man......

当然, 缺点 是它会告诉您所有与当前时区相同的时区。(这意味着完全相同-不仅是“当前同时”,而且“只要系统知道,总是在同一天更改其时钟”)。

你最好的选择可能是上述方法相结合:用

/etc/timezone
如果存在;
否则尝试解析
/etc/localtime
为符号链接;如果失败,则搜索匹配的时区定义文件;如果失败了-放弃并回家;-)

(而且我不知道以上任何一项是否适用于AIX …)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/392966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号