I'm in wordpress and write some php to get Pesrian and Arabic date from Gregorian. And I see this: Formatting DateTime object, respecting Locale::getDefault()
I want a function to get persian and arabic date each time function calls by simply change region and timezone
You can't use languages other than English with the standard date
/DateTime
constructs in PHP. The only way to do this was to set the locale using setlocale()
and use the strfttime()
function... however that function is now deprecated in favor of using the INTL/ICU extension's IntlDateFormatter
class:
function getFormattedDateIntl(
?\DateTime $date = null,
?string $locale = null,
?DateTimeZone $timezone = null,
string $dateFormat
) {
$date = $date ?? new \DateTime();
$locale = $locale ?? \Locale::getDefault();
$formatter = new \IntlDateFormatter(
$locale,
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
$timezone,
IntlDateFormatter::TRADITIONAL,
$dateFormat
);
return $formatter->format($date);
}
function getWeekdayIntl(
?\DateTime $date = null,
?string $locale = null,
?DateTimeZone $timezone = null
) {
return getFormattedDateIntl($date, $locale, $timezone, 'eeee');
}
$islamicDateRight = getFormattedDateIntl(
new DateTime(),
'ar@calendar=islamic-civil',
new \DateTimeZone('Asia/Tehran'),
'eeee dd MMMM'
);