Hallo zusammen
Ich versuche eine Methode zu schreiben, welche mir von den Wochentagen 0-7, jeweils den internationalen Wochentag als String zurück gibt.
Jedoch scheitert es mir an einer schlauen Lösung. Vielleicht hat mir jemand einen kleinen Tip? Besten Dank im voraus.
Das gleiche habe ich für die Monate gemacht und kam auf folgende Lösung:
Ich versuche eine Methode zu schreiben, welche mir von den Wochentagen 0-7, jeweils den internationalen Wochentag als String zurück gibt.
Jedoch scheitert es mir an einer schlauen Lösung. Vielleicht hat mir jemand einen kleinen Tip? Besten Dank im voraus.
Das gleiche habe ich für die Monate gemacht und kam auf folgende Lösung:
PHP-Code:
/**
* Convert month number to its name internationally.
*
* @param string|int The month number such as '01', 1, ...
* @param string The pattern. 'M' = '1', 'MM' = '09', 'MMM' = 'Jan', 'MMMM' = 'January'
* @param null|string The locale such as de_DE or null to use default set.
* @return null|string The name such as 'January', or null if not valid.
*/
public function toMonth($number, string $pattern = 'MMMM', ?string $locale = null): ?string
{
if (!is_numeric($number))
{
return null;
}
$number = (int) $number;
if ($number > 12 || $number < 1)
{
return null;
}
$number = '2000-'.$number;
$locale = $locale ?: $this->getLocale();
if (!in_array($pattern, ['M', 'MM', 'MMM', 'MMMM']))
{
$pattern = 'MMMM';
}
$fmt = new IntlDateFormatter(
$locale,
IntlDateFormatter::FULL,
IntlDateFormatter::NONE,
$this->getDateTimeZone()->getName(),
IntlDateFormatter::GREGORIAN,
$pattern
);
try {
$month = $fmt->format($this->toDateTime($number));
return $pattern === 'MMM' ? rtrim($month, '.') : $month;
}
catch (Throwable $t)
{
return null;
}
}
Kommentar