在OS X中:在PHP中获取时区或从终端中的命令提示符获取时区

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在OS X中:在PHP中获取时区或从终端中的命令提示符获取时区脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
出于某种原因,PHP开发人员不久前决定他们不想信任系统提供的时区信息.所以你的OSX下的PHP脚本如果要使用任何时间/日期函数,必须做类似的事情:

date_default_timezone_set ("EuroPE/London");

现在,我不知道我的脚本将在何处执行,并且期望普通用户必须提供时区字符串是不合理的 – 用户会非常合理地说他们已经在系统首选项中设置它,为什么我不能在那里寻找它.

所以,到目前为止,我一直在做:

$cmd = '/usr/sbin/systemSETUP -gettimezone';
exec ($cmd,$results,$result);

并通过结果来获取要使用的字符串.到现在为止还挺好.现在我观察两件事:

>此命令的手册页坚持说我需要“至少运行admin”.我在一个没有admin PRiv的帐户上尝试过这种情况确实如此,所以从长远来看,我需要另一种方法.
>我碰巧在系统偏好设置中锁定了TimeZone窗格 – >日期和时间,并且可重复地观察到,无论何时该窗格被锁定,我在上面给出的systemsetup命令在响应之前都会暂停30秒.如果我解锁TimeZone窗格,它会在通常的短时间内响应.

有谁知道为什么会这样?

其次,是否有人知道我可以执行的替代命令给我时区,这不需要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);

脚本宝典总结

以上是脚本宝典为你收集整理的在OS X中:在PHP中获取时区或从终端中的命令提示符获取时区全部内容,希望文章能够帮你解决在OS X中:在PHP中获取时区或从终端中的命令提示符获取时区所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。