• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> Klick

PHP: Datum umformatieren

atomfried

Leipziger Reinette
Registriert
02.04.05
Beiträge
1.804
hallo!
ich habe ein kleines PHP Problem und hoffe es kann mir jemand helfen...

mit:
Code:
<?php
$heute = date("Ymd_hms");
?>
lese ich das datum aus und schreibe es anschliessend in eine Textdatei in diesem Format:
"20070306_110348"
Das ist auch richtig so! Aber nun lese ich dieses Datum wieder aus und hätte es gerne umgewandelt in dieses Format:
"March 6, 2007, 11:03" also so wie als wenn ich die Abfrage so gemacht hätte:

Code:
<?php
$heute = date("F j, Y, g:i");
?>
nur halt eben mit dem ausgelesenen datum und nicht dem aktuellen.

ich hoffe ich konnte mich verständlich ausdrücken.
Danke schonmal!
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Wenn Du ein proprietäres Datumsformat verwendest, wird es natürlich etwas aufwändiger, andernfalls könntest Du die Datumszeichenketten schön mit strtotime, strptime, etc. auflösen. Aber hier müsstest Du die Zeichenkette zunächst auseinanderschrauben und einzeln verwenden (oder in einen UNIX-Timestamp verwandeln):
Code:
<?php
$parts = array();
$parts['y'] = substr($atomfdate, 0, 4);
$parts['m'] = substr($atomfdate, 4, 2);
$parts['d'] = substr($atomfdate, 6, 2);
$parts['h'] = substr($atomfdate, 9, 2);
$parts['m'] = substr($atomfdate, 11, 2);

/* Jetzt hast Du alle Bestandteile aufgelöst, und kannst diese entweder direkt ausgeben... */
/* ... oder zunächst in einen Unix-Timestamp umwandeln... */
$stamp = mktime(0, $parts['m'], $parts['h'], $parts['m'], $parts['d'], $parts['y']);

/* ... und jetzt formatiert wieder ausgeben: */
$heute = date("F j, Y, g:i", $stamp);

/* ungetestet ;) */
?>

Schau Dir auch mal strftime an.
 

LaForce

Transparent von Croncels
Registriert
18.01.06
Beiträge
309
Ich würde das Datum lieber etwas verträglicher speichern (z.B. in UTC). Ansonsten kannst du auch sowas machen:

$x = "20070306_110348";
echo date("F j, Y",mktime(substr($x,9,2),substr($x,11,2),substr($x,13,2),substr($x,6,2),substr($x,4,2), substr($x,0,4)));
 

atomfried

Leipziger Reinette
Registriert
02.04.05
Beiträge
1.804
<?php
$parts = array();
$parts['y'] = substr($atomfdate, 0, 4);
$parts['m'] = substr($atomfdate, 4, 2);
$parts['d'] = substr($atomfdate, 6, 2);
$parts['h'] = substr($atomfdate, 9, 2);
$parts['m'] = substr($atomfdate, 11, 2);

...

danke für die hilfe, musste es noch ein wenig anpassen, aber jetzt funktioniert es zum glück. das "$parts['m']" zweimal bei dir im code vorkommt fiel mir auch erst später auf.
 

atomfried

Leipziger Reinette
Registriert
02.04.05
Beiträge
1.804
Ich würde das Datum lieber etwas verträglicher speichern (z.B. in UTC). Ansonsten kannst du auch sowas machen:

$x = "20070306_110348";
echo date("F j, Y",mktime(substr($x,9,2),substr($x,11,2),substr($x,13,2),substr($x,6,2),substr($x,4,2), substr($x,0,4)));

das sieht fast noch einfacher aus. werde es mal ausprobieren. danke!