【问题标题】:How to get locale using Php如何使用 PHP 获取语言环境
【发布时间】:2010-05-21 09:47:14
【问题描述】:

如何使用Php获取Locale,我想根据位置获取时区, 有没有可能进入php。

我需要将其转换为 GMT 并保存数据库。我需要再次将其拉回具有相同时区的 UI。

【问题讨论】:

  • 运行 PHP 的机器的语言环境或发出 HTTP 请求的用户的语言环境?
  • locale != location 我相信你的意思是locationlocale 是系统的国家和语言设置

标签: php


【解决方案1】:

使用

setlocale  (LC_ALL,"0");

获取实际语言环境的结果。

【讨论】:

  • 非常感谢!它确实在 PHP 文档中,但不知何故就在我眼前,以至于我错过了 :)
  • 这应该是上面问题的答案。非常感谢!!
  • 我无法让它在我的机器(运行 PHP 5.4)上工作。无论我设置什么本地,“setlocale(LC_ALL,'0')”每次都会返回一个值为“C”的单个字母字符串!
  • 我也有这种行为。但不总是。有时我得到这个字符串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。奇怪的错误。
  • @JohnSlegers, @Armin, @Tobia: C 是默认设置,如果之前没有设置过区域设置。这意味着nothing。当你得到这个C时,试试money_format('%i', 123.45);。不会有货币 => 123.45。但是将它设置为en_EN,你会得到USD 123.45。您还可以设置一个本地,然后通过以下调用将其设置回之前的状态 setlocale(LC_ALL, 'C')... 参见此处:unix.stackexchange.com/questions/87745/what-does-lc-all-c-do
【解决方案2】:

您无法从服务器端获取客户端的语言环境或时区,只能从客户端使用 JavaScript 进行猜测。

(如果浏览器支持 Java,你可以获得更多的语言环境信息,但这有点痛苦,每个人都讨厌小程序。)

要在 Web 应用程序中处理时区,请将所有时间存储为 UTC 时间戳,并使用用户选择的时区将它们转换为文本以进行页面格式化。您可以使用方法like in this question 来猜测时区,但由于这不可靠,您还应该允许用户明确选择时区。

【讨论】:

  • 我们正在开发允许用户配置消息(SMS)的调度时间的php网站。所以我们需要允许最终用户在各个区域设置时间。
  • 是的...用户必须手动指定他们正在使用的timezone_identifier,才能传递给date_default_timezone_set,如 Sarfraz 所述。标识符列表见php.net/manual/en/timezones.php;您可以将它们放在下拉框或其他 UI 中。您可以使用 JavaScript 为下拉菜单的默认值选择一个最佳猜测时区,如我链接的问题中所示,或者只是默认为 UTC。用户输入时间和时区后,应将其转换为 UTC 用于数据库存储。
  • +1 用于存储 UTC 时间戳。您可能还想检查 phpBB 源(或类似的 PHP 应用程序),他们让用户在注册时选择他们的时区,我认为这正是您正在寻找的。​​span>
  • +1 表示 UTC 时间戳,因为它们很容易按字母数字排序,而不是使用复杂的日期算术。
【解决方案3】:

你可以使用:

date_default_timezone_set('Europe/London');
date_default_timezone_get; // Europe/London

if (ini_get('date.timezone')) {
    echo 'date.timezone: ' . ini_get('date.timezone');
}

【讨论】:

  • 那些双单​​引号是有原因的,还是错字?
  • 我可以用它来获取语言环境 date_default_timezone_get()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
相关资源
最近更新 更多