PHP Deutsche Tage

Überkinger

Lieutenant
Registriert
Juli 2010
Beiträge
600
Hallo,

ich verwende um Tage hinzuzuzählen folgenden Code:

PHP:
date_default_timezone_set ('Europe/Berlin');
echo date ('Y-m-D' , strtotime("+1 days"));

Ausgabe ist Fri. für Freitag.

Wie bekomme ich deutsche abgekürzte Tage?
 
Das musst du mit einer Funktion machen, ich habe dafür immer einer parat :)

PHP:
function germanDate($date) {
	$trans = array(
		'Monday'    => 'Montag',
		'Tuesday'   => 'Dienstag',
		'Wednesday' => 'Mittwoch',
		'Thursday'  => 'Donnerstag',
		'Friday'    => 'Freitag',
		'Saturday'  => 'Samstag',
		'Sunday'    => 'Sonntag',
		'Mon'       => 'Mo',
		'Tue'       => 'Di',
		'Wed'       => 'Mi',
		'Thu'       => 'Do',
		'Fri'       => 'Fr',
		'Sat'       => 'Sa',
		'Sun'       => 'So',
		'January'   => 'Januar',
		'February'  => 'Februar',
		'March'     => 'März',
		'May'       => 'Mai',
		'June'      => 'Juni',
		'July'      => 'Juli',
		'October'   => 'Oktober',
		'December'  => 'Dezember',
	);
	$date = strtr($date, $trans);
	return $date;
}
echo germanDate(date('Y-m-D' , strtotime("+1 days")));
 
Wahnsinn. Super schnell die Computerbase. Vielen Dank!
 
Kann PHP keine Locales? Also wenn ich bei mir die Locale auf de_DE@UTF8 umstelle ändern zumindest alle
GNU Tools ihre Ausgabe auf deutsch. Viele andere Programme können das entsprechend auch.
 
Genau und hier mal ein paar Hilfen:

Welche Locales gibt es in "meinem" System:
PHP:
system('locale -a');

(ich hab da u.a. de_DE.utf8)

Hiermit kann man testen ob PHP das frisst UND setzen.
PHP:
if($lc = setlocale(LC_ALL, "de_DE.utf8"))
echo "<p>Locale setting is \"$lc\".</p>";
else
echo "<p>Couldn't change to a German locale.</p>";

Zeitzone kann nicht Schaden
PHP:
date_default_timezone_set('Europe/Berlin');

Deutsche Ausgabe, wenn "Locale setting is ..." funktioniert.
PHP:
echo "time " . strftime('%A, %d. %B %Y');


Nox
 
Ich würde auf die Funktion von NoXPhasma greifen.
Falls das Skript umziehen muss, ist man nicht von irgendwelchen Locales abhängig ;-)

Mache das genauso :)

Vielleicht könnte das jemand hier auch gebrauchen. Gibt die grobe Dauer zurück falls eine Zeiteinheit in Sekunden angegeben ist.
PHP:
function duration ($int,$R=0,$lang='de') {
    # Math. SI-Einheiten
    $devision = array(
                    31536000,    // Jahr 60*60*24*30*12 Sekunden
                    2592000,    // Monat 60*60*24*30 Sekunden
                    604800,        // Woche 60*60*24*7
                    86400,        // Tag 60*60*24
                    3600,        // Stunde 60*60
                    60,            // Minute 1*60
                    1);            // Sekunde 1
    
    $nint = 0;
    # SI-Einheiten in Sprachen
    $unit['de'] = array(array('Jahre','Jahr'),array('Monate','Monat'),
                        array('Wochen','Woche'),array('Tage','Tag'),
                        array('Stunden','Stunde'),array('Minuten','Minute'),
                        array('Sekunden','Sekunde')
                    );
    $unit['en'] = array(array('years','year'),array('months','month'),
                        array('weeks','weeks'),array('days','day'),
                        array('hours','hour'),array('minutes','minute'),
                        array('seconds','second')
                    );
    
    # Größte passende Einheit wird gesucht
    for($i = 0; $i <= (count($devision)-1); $i++) {
        if(($int / $devision[$i]) >= 1) {
                $nint = round(($int / $devision[$i]),$R);
            if($nint > 1 AND isset($unit[$lang]))  {
                $return = $nint . ' ' . $unit[$lang][$i][0];
            } elseif($nint == 1 AND isset($unit[$lang])) {
                $return = $nint . ' ' . $unit[$lang][$i][1];
            }
            break;
        }
    }
    
    return $return;
}

echo duration (2222222,2); #3.67 Wochen
 
Zuletzt bearbeitet:
Zurück
Oben