我正在尝试使用strftime显示本地化日期,但它不起作用。
class ExampleController extends AbstractActionController
{
public function indexAction()
{
$openDate = DateTime::createFromFormat(...);
setlocale(LC_ALL, Locale::getDefault());
Debug::dump(Locale::getDefault()); // shows 'fr_FR'
Debug::dump(strftime('%B %Y', $openDate->getTimestamp())); // shows 'August 2013' instead of 'Août 2013'
}
}
在module / Application / config / module.config.php
中return array(
...
'translator' => array(
'locale' => 'fr_FR',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
...
);
有人可以告诉我为什么月份没有用法语翻译?
答案 0 :(得分:1)
strftime
与ZF2或intl
php扩展无关。但是,ZF2确实附带了DateFormat
视图助手,可以解决您的问题。完整文档可在以下网址获得:
http://framework.zend.com/manual/2.2/en/modules/zend.i18n.view.helpers.html#dateformat-helper
一个简单的例子:
Debug::dump($this->dateFormat($openDate->getTimestamp(), IntlDateFormatter::LONG));
DateFormat
视图帮助器的默认语言环境是Locale::getDefault()
返回的默认语言环境,因此它应该根据需要以法语返回日期。
使用自定义格式:
Debug::dump($this->dateFormat($openDate->getTimestamp(), IntlDateFormatter::LONG, IntlDateFormatter::LONG, null, "dd LLLL Y - HH:mm"));
答案 1 :(得分:0)
根据Tomdarkness的说法,我找到了一种方法来做我想做的事。我使用了IntlDateFormatter:
$formatter = \IntlDateFormatter::create(
\Locale::getDefault(), // fr_FR
\IntlDateFormatter::FULL,
\IntlDateFormatter::FULL,
'Europe/Paris',
\IntlDateFormatter::GREGORIAN,
'dd LLLL Y - HH:mm'
);
echo $formatter->format($openDate); // shows '20 août 2013 - 14:39'
我想也许我会基于此编写自己的dateFormat视图助手。