在OS X中:在PHP中获取时区或从终端中的命令提示符获取时区
出于某种原因,PHP开发人员不久前决定他们不想信任系统提供的时区信息.所以你的OSX下的PHP脚本如果要使用任何时间/日期函数,必须做类似的事情:
date_default_timezone_set ("Europe/London"); 现在,我不知道我的脚本将在何处执行,并且期望普通用户必须提供时区字符串是不合理的 – 用户会非常合理地说他们已经在系统首选项中设置它,为什么我不能在那里寻找它. 所以,到目前为止,我一直在做: $cmd = '/usr/sbin/systemsetup -gettimezone'; exec ($cmd,$results,$result); 并通过结果来获取要使用的字符串.到现在为止还挺好.现在我观察两件事: >此命令的手册页坚持说我需要“至少运行admin”.我在一个没有admin priv的帐户上尝试过这种情况确实如此,所以从长远来看,我需要另一种方法. 有谁知道为什么会这样? 其次,是否有人知道我可以执行的替代命令给我时区,这不需要admin priv? 谢谢, 解决方法
OS X通过从/ etc / localtime到/usr/share / zoneinfo /下的正确时区文件建立符号链接来存储系统的时区.见“man 3 tzset”.
由于您已经使用PHP,因此可以执行此操作以获取时区的名称: $systemZoneName = readlink('/etc/localtime'); $systemZoneName = substr($systemZoneName,strlen ('/usr/share/zoneinfo/')); 然后,要使其成为默认时区,您可以执行此操作: date_default_timezone_set ($systemZoneName); 你也应该能够做到 ini_set('date.timezone',$systemZoneName); 或者,如果您只需要一个DateTimeZone对象, $systemZone = new DateTimeZone ($systemZoneName); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |