格式化DateTime对象,尊重Locale :: getDefault()
我有一个DateTime对象,目前我正在通过
$mytime->format("D dmY")
这给我完全我需要的格式:
二零一二年五月二十三日
唯一缺less的一点是正确的语言。 我需要Tue
( Tuesday
)的德文译本,即Die
( Dienstag
)。
这给了我正确的区域设置
Locale::getDefault()
但是我不知道如何告诉DateTime::format
来使用它。
没有办法做到这样的事情:
$mytime->format("D dmY", \Locale::getDefault());
这是因为format
不关注区域设置。 你应该使用strftime
。
例如:
setlocale(LC_TIME, "de_DE"); //only necessary if the locale isn't already set $formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp())
您可以使用Intl扩展名格式化date。 它将根据所选的区域设置格式化date/时间,或者可以使用IntlDateFormatter::setPattern()
覆盖该date/时间。
使用自定义模式的一个快速示例,对于您所需的输出格式,可能看起来像。
$dt = new DateTime; $formatter = new IntlDateFormatter('de_DE', IntlDateFormatter::SHORT, IntlDateFormatter::SHORT); $formatter->setPattern('E dMyyyy'); echo $formatter->format($dt);
其中输出以下(至less今天,至less)。
迪。 2013年6月4日
编辑 :啊嘘! 回答了一个古老的问题,因为一些评论碰到了名单! 现在至less提到Intl选项。