删除 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
。
我想输出一个本地化的日期并试过这个:
$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
。