5

尝试使用 PHP 显示当前时间(使用this):

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

尽可能简单。如何本地化?我想将月份和日期翻译成希伯来语。

谢谢。

4

3 回答 3

9

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

130 多种语言支持所有月份和工作日的完整名称和缩写名称。方法支持使用本地化的月份和工作日名称输入和输出日期,采用与每个语言环境相关的传统格式。

于 2009-09-13T22:30:37.160 回答
5

实际上,我认为 PHP 5.2 不太可能 :-(

至少,不是与 PHP 捆绑的/在 PHP 中捆绑的(不过,您可以使用 PHP 中编码的库,就像其他答案指出的那样)


但是,使用 PHP 5.3,您拥有IntlDateFormatter类,它完全符合您的要求:

此类表示 ICU 日期格式化功能。它允许用户以本地化格式显示日期或使用模式字符串和/或固定模式将字符串解析为 PHP 日期值。

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

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

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

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

你会得到:

dimanche 9 novembre 2008 23:54:47 GMT+00:00
9 nov. 2008 23:54
2008年11月9日星期日 下午11時54分47秒 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 扩展,并获得相同的功能......

于 2009-09-13T22:29:29.767 回答
2

如果您需要比 Zend_Date 和 IntlDateFormatter 更简单的方法,请尝试使用strftimephp 中的标准函数。这是我为在 Ubuntu 上使用运行 php 5.3 的俄语启动并运行它所做的工作(未安装俄罗斯语言环境)。

安装语言环境

  1. cd /usr/share/locales
  2. sudo ./install-language_pack ru_RU
  3. sudo dpkg-reconfigure locales
  4. 重启阿帕奇

接下来,使用以下 php 代码段:

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

应该输出星期几。

于 2010-09-27T19:15:19.780 回答