PHP intl может конвертировать григорианскую дату в другой тип календаря.
Например, григорианский в хиджры, 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')
Вернуть
۱۳۹۶-۰۶-۲۷ ۱۳:۴۹:۵۱
Новая строка шаблона для использования. Возможные шаблоны задокументированы на Форматирование даты и времени
Да, оно может. Это пример, который преобразует объект времени в его строку в персидском формате, используя intl:
function c2persian($time, $toCalender = 'persian', $timezone = 'Asia/Tehran', $locale = 'fa_IR') {
$formatter = IntlDateFormatter::create($locale, NULL, NULL, $timezone, IntlCalendar::createInstance($timezone, "$locale@calendar=$toCalender"));
return $formatter->format($time);
}
$time = strtotime("2089-08-09 00:00:00 UTC");
echo c2persian($time);
Вы можете найти больше информации на php intlCalendar документация.
PHP уже имеет функции формата даты, вам нужно сначала конвертировать с strtotime()
функция и получить желаемые значения с date()
<?php
$originalDate = "2017/04/11";
$theDate = strtotime($originalDate);
$theDay = date('d',$theDate);
$theMonth = date('m',$theDate);
$theYear = date('Y',$theDate);
$customFormat = date('Y-m-d',$theDate);
$customFormat2 = date('d/m/Y',$theDate);
$customFormat3 = date('F j, Y, g:i a',$theDate);
?>
Пример работы здесь: https://eval.in/772416
Вы можете получить больше информации о дате в php здесь: http://php.net/manual/en/function.date.php