У меня есть эта функция для преобразования григорианской даты в дату Джалали:
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)
или т. д., поэтому я должен написать отдельную функцию для каждого формата даты.
Благодарю.
Чтобы изменить шаблон вы можете использовать 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);
}
Других решений пока нет …