Как получить конкретный результат от моей функции IntlDateFormatter ().?

У меня есть эта функция для преобразования григорианской даты в дату Джалали:

function toJalali ($date)
{
$fmt = new IntlDateFormatter("fa_IR@calendar=persian", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL);
return $fmt->format($date);
}

когда я это называю toJalali(time()) это даст мне полную дату (1397-8-17 ه.ش ...)

Как я могу получить мой конкретный формат даты сверху функции.?

я знаю, что параметры формата могут быть установлены в конструкторе:

$fmt = new IntlDateFormatter("fa_IR@calendar=persian", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL, 'MM/dd/yyyy');

но как насчет того, когда я хочу другие форматы времени.?

как только year : (yyyy) или же (EEEE/yyyy/MM) или т. д., поэтому я должен написать отдельную функцию для каждого формата даты.

Благодарю.

0

Решение

Чтобы изменить шаблон вы можете использовать setPattern метод как это:

$fmt = new IntlDateFormatter("fa_IR@calendar=persian", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL, 'MM/dd/yyyy');
$fmt->setPattern('EEEE/yyyy/MM');
echo  $fmt->format(0);

И ваша функция будет выглядеть так:

function toJalali ($date, $pattern = null)
{
$fmt = new IntlDateFormatter("fa_IR@calendar=persian", IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL);
if ($pattern){
$fmt->setPattern($pattern);
}

return $fmt->format($date);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector