我具有此功能,可以将公历日期转换为Jalali(波斯)日期:
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 :(得分:1)
要更改模式,您可以使用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);
}