如何使用Php获取Locale,我想根据位置获取时区,是否有可能在Php中实现。
我需要将其转换为GMT并保存到数据库中。然后,我需要在UI中以相同的时间和时区再次提取它。
如何使用Php获取Locale,我想根据位置获取时区,是否有可能在Php中实现。
我需要将其转换为GMT并保存到数据库中。然后,我需要在UI中以相同的时间和时区再次提取它。
使用
setlocale (LC_ALL,"0");
获取实际区域设置的结果。
LC_CTYPE=de_DE.UTF8;LC_NUMERIC=C;LC_TIME=de_DE.UTF8;LC_COLLATE=de_DE.UTF8;LC_MONETARY=de_DE.UTF8;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
,有时只有 C
。很奇怪的 bug。 - Arminmoney_format('%i',123.45);
,结果将是不带货币符号的 123.45
。但将其设置为“en_EN”,您将得到USD 123.45
。您还可以设置本地环境并在执行完后通过以下调用将其还原回之前的状态,setlocale(LC_ALL,'C')
... 详见:http://unix.stackexchange.com/questions/87745/what-does-lc-all-c-do - algorhythm您可以使用:
date_default_timezone_set('Europe/London');
date_default_timezone_get; // Europe/London
或者
if (ini_get('date.timezone')) {
echo 'date.timezone: ' . ini_get('date.timezone');
}
你无法从服务器端获取客户端的语言环境或时区,只能通过 JavaScript 在客户端进行猜测。
(如果浏览器支持 Java,您可以获取更多的语言环境信息,但这有点麻烦,而且每个人都讨厌小程序。)
为了处理 Web 应用程序中的时区,将所有时间存储为 UTC 时间戳,并使用用户选择的时区将其转换为文本以进行页面格式化。您可以使用类似于 此问题 中的方法来猜测时区,但由于这不可靠,因此还应允许用户明确选择时区。
timezone_identifier
,并将其传递给date_default_timezone_set
,如Sarfraz所述。请参阅http://www.php.net/manual/en/timezones.php以获取标识符列表;您可以将它们放在下拉框或其他UI中。您可以使用JavaScript选择最佳猜测时区作为下拉列表的默认值,如我链接的问题中所述,或者简单地默认为UTC。一旦用户输入了时间和时区,您应将其转换为UTC以进行数据库存储。 - bobince