用PHP本地化当前时间

Localize current time in PHP

尝试用PHP显示当前时间(使用此选项):

1
2
$date = date('m/d/Y h:i:s a', time());                      
echo $date;

尽可能简单。我如何定位它?我想把月和日翻译成希伯来语。

谢谢。


Zend_Date完全国际化。您应该检查一下,找到一个简单的方法:

All full and abbreviated names of
months and weekdays are supported for
more than 130 languages. Methods
support both input and the output of
dates using the localized names of
months and weekdays, in the
conventional format associated with
each locale.


实际上,我认为在php 5.2中是不可能的:-(

至少,不是与/in-php捆绑在一起(不过,有一些库是用php编码的,您可以使用,就像其他答案指出的那样)

不过,对于php 5.3,您有了intldateFormatter类,它可以满足您的需求:

This class represents the ICU date
formatting functionality. It allows
users to display dates in a localized
format or to parse strings into PHP
date values using pattern strings
and/or canned patterns.

例如,使用该类,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) ."
"
;
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) ."
"
;

echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) ."
"
;
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) ."
"
;

echo IntlDateFormatter::create('en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) ."
"
;
echo IntlDateFormatter::create('en_US', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) ."
"
;

你会得到:

1
2
3
4
5
6
dimanche 9 novembre 2008 23:54:47 GMT+00:00
9 nov. 2008 23:54
2008119日星期日 下午115447秒 GMT+00:00
2008/11/9 下午 11:54
Sunday, November 9, 2008 11:54:47 PM GMT+00:00
Nov 9, 2008 11:54 PM

看起来很不错,不是吗?

令人遗憾的是,php 5.3只有几个月大,在许多主机服务上不可用…并且需要对应用程序进行测试(可能还需要修复)。

考虑一下:也许您可以在php 5.2上安装pecl intl扩展,并获得相同的功能…


如果您需要比Zend_日期和intldateFormatter更简单的方法,请尝试使用PHP中的标准strftime函数。下面是我为在Ubuntu上运行php 5.3(没有安装俄语区域设置)所做的工作。

安装区域设置

  • 埃多克斯1〔2〕
  • 埃多克斯1〔3〕
  • 江户十一〔四〕号
  • 重新启动Apache
  • 接下来,使用以下PHP代码段:

    1
    2
    setlocale(LC_TIME, 'ru_RU.UTF-8');
    echo strftime('%A', time());

    应该输出今天的星期几。