删除 IntlDateFormatter 中的时间部分

Removing time part in IntlDateFormatter

我想输出一个本地化的日期并试过这个:

$time = new DateTime();
echo IntlDateFormatter::formatObject($time)."\n";
echo IntlDateFormatter::formatObject($time, [IntlDateFormatter::NONE, IntlDateFormatter::MEDIUM])."\n";
echo IntlDateFormatter::formatObject($time, [IntlDateFormatter::MEDIUM, IntlDateFormatter::NONE])."\n";

我得到这个输出:

Oct 28, 2015, 2:10:50 PM
2:10:50 PM
20151028 02:10 PM

所以删除日期部分可以正常工作,但不能删除时间部分。我做错了什么?

您可以在这里尝试:https://3v4l.org/UdtoX

编辑:

我想使用 IntlDateFormatter 的原因是为了获取日期的 i18n。例如,如果在使用 IntlDateFormatter 之前设置 Locale::setDefault('en_GB') 和设置 Locale::setDefault('no_NO'),我应该会得到不同的结果。因此我不想手动指定格式。

<?php
$date = new DateTime();

$dateFormatter = IntlDateFormatter::create(
  Locale::getDefault(),
  IntlDateFormatter::NONE,
  IntlDateFormatter::NONE,
  date_default_timezone_get(),
  IntlDateFormatter::GREGORIAN,
  'MM/dd/yyyy'
);

var_dump($dateFormatter->format($date));

这似乎是 PHP 中的错误。通过创建一个对象而不是调用它工作的静态方法:)

$formatter = new IntlDateFormatter(Locale::getDefault(), IntlDateFormatter::MEDIUM, IntlDateFormatter::NONE);
echo $formatter->format($time);

给出所需的输出Oct 28, 2015