删除IntlDateFormatter中的时间部分

时间:2015-10-28 13:15:54

标签: php date datetime internationalization

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

$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

因此删除datepart工作正常,但不删除时间部分。我做错了什么?

您可以在此处试用:https://3v4l.org/UdtoX

修改

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

2 个答案:

答案 0 :(得分:2)

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

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

提供所需的输出Oct 28, 2015

答案 1 :(得分:0)

<?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));