是否可以关闭 "seconds" 并"long text in the end" "IntlDateFormatter::FULL" IntlDate格式化程序日期/时间格式?



注意:如果这被认为是错误的堆栈类别,我将请您将其移至正确的类别。

示例代码:

var_dump(IntlDateFormatter::formatObject(new DateTime("2020-09-09 09:09:09 Europe/Madrid"), IntlDateFormatter::FULL, 'es_ES'));
var_dump(IntlDateFormatter::formatObject(new DateTime("2020-09-09 09:09:09 Europe/Madrid"), IntlDateFormatter::LONG, 'es_ES'));

输出:

string(79) "miércoles, 9 de septiembre de 2020, 9:09:09 (hora de verano de Europa central)"
string(37) "9 de septiembre de 2020, 9:09:09 CEST"

我想要这样的输出:

string(79) "miércoles, 9 de septiembre de 2020, 9:09"

也就是说,"完整"版本(不是"长"或任何更短的版本(,只是减去第二部分以及最后的"(hora de verano de Europa central("。我并不是要str_replace或正则表达式,因为我已经知道该怎么做。我的意思是正确,强大的方法来做到这一点,以便它适用于所有输出非常不同文本的无数格式。

据我所知,PHP 中的各种 DateTime/NumberFormat/等类/函数没有这样的选项,但过去经常发生的情况是,它只是巧妙地隐藏在我没有看的地方。

你可以用正则表达式操作它

$date_str = IntlDateFormatter::formatObject(new DateTime("2020-09-09 09:09:09 Europe/Madrid"), IntlDateFormatter::FULL, 'es_ES');
var_dump( preg_replace( '/:[0-9]{2} .*/', '', $date_str ) );

最新更新