为简单起见,您必须intl
在服务器上安装扩展,并且您的 php 版本必须高于5.4
. 如果是,您可以轻松地IntlCalendar
使用波斯日历参数创建一个实例:
$date = IntlCalendar::createInstance(
'Asia/Tehran',
'fa_IR@calendar=persian'
);
设置您的日期时间:
$date->set(1395, 5, 15, 19, 17, 11); // Notice that month number begin from 0 not 1.
IntlDateFormatter
然后使用公历创建一个实例 - 或您想要的每个日历:
$intlDateFormatter = new IntlDateFormatter(
"en_US", // string $locale
IntlDateFormatter::FULL, // int $datetype
IntlDateFormatter::FULL, // int $timetype
'Asia/Tehran', // mixed $timezone
IntlDateFormatter::GREGORIAN, // mixed $calendar
'yyyy/MM/dd HH:mm:ss' // string $pattern
);
并使用toDateTime
该方法显示您想要的日期:
var_dump($intlDateFormatter->format($date));
// /srv/http/test/DateTime.php:29:
// string(19) "2016/09/05 19:17:11"
PS:我写了一个转换日期的小库,可以在这里找到:https ://github.com/meysampg/intldate ,另外如果你只想在其他系统上表示日期,你可以使用IntlDateBehavior。