PHP intl可以将公历日期转换为其他日历类型.
例如Gregorian到Hijri,2017/04/11到1396/01/22
或者我们必须使用外部库来转换日期?
解决方法:
你可以使用这种方法:
function getDateTimeFromCalendarToFormat($format = 'yyyy-MM-dd HH:mm:ss', $time = null, $locale = 'fa_IR', $calendar = 'persian', $timeZone = 'Asia/Tehran')
{
if (empty($time)) {
$time = new \DateTime();
}
$formatter = new \IntlDateFormatter("{$locale}@calendar={$calendar}", \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, $timeZone, \IntlDateFormatter::TRADITIONAL);
$dateArray = [];
$formatter->setPattern($format);
return $formatter->format($time);
}
如果你调用getDateTimeFromCalendarToFormat(‘yyyy-MM-dd HH:mm:ss’,null,’en_US’)
返回
1396-06-27 13:50:21
如果你调用getDateTimeFromCalendarToFormat(‘yyyy-MM-dd HH:mm:ss’,null,’fa_IR’)
返回
1396-06-27 13:49:51
要使用的新模式字符串.可能的模式记录在Formatting Dates and Times