我想输出一个本地化的日期,并试过这个:
$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
,我会得到不同的结果。因此,我不想手动指定格式。
答案 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));