如何从我的IntlDateFormatter()函数获取特定结果?

时间:2018-11-09 06:47:24

标签: php function datetime-format

我具有此功能,可以将公历日期转换为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)之类,所以我必须为每种日期格式编写单独的函数。

谢谢。

1 个答案:

答案 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);
}