格式化 DateTime 对象,遵循 Locale::getDefault()

2022-08-30 09:00:30

我有一个 DateTime 对象,我当前正在通过以下方式格式化它

$mytime->format("D d.m.Y")

这给了我我需要的格式:

周二 5.3.2012

唯一缺少的一点是正确的语言。我需要 () 的德语翻译,即 ()。TueTuesdayDieDienstag

这为我提供了正确的区域设置

Locale::getDefault()

但我不知道如何告诉使用它。DateTime::format

难道没有办法做这样的事情:

$mytime->format("D d.m.Y", \Locale::getDefault());

答案 1

您可以使用 Intl 扩展名来设置日期的格式。它将根据所选的区域设置设置日期/时间的格式,或者您可以使用IntlDateFormatter::setPattern()覆盖它。

对于所需的输出格式使用自定义模式的快速示例可能如下所示。

$dt = new DateTime;

$formatter = new IntlDateFormatter('de_DE', IntlDateFormatter::SHORT, IntlDateFormatter::SHORT);
$formatter->setPattern('E d.M.yyyy');

echo $formatter->format($dt);

它输出以下内容(至少在今天)。

时间:4.6.2013


答案 2

这是因为不注意区域设置。您应该改用 strftimeformat

例如:

setlocale(LC_TIME, "de_DE"); //only necessary if the locale isn't already set
$formatted_time = strftime("%a %e.%l.%Y", $mytime->getTimestamp())

推荐