Variable in Datum verwandeln
Simon
- php
Hallo miteinander,
Weiss jemand, wie man eine Varible ($Datum) eingegeben im Format (YYYY-MM-DD) in ein von PHP erkanntes Datum verwandeln kann, so dass er bei Ausgabe den Tag mitliefern würde ('I', 'd. M. Y') "Don, 25. Mär. 2005" zum Beispiel.
Leider nützt mir der Timestamp nichts, da es liste mit Übungsdaten handeln wird.
Wäre froh um jede hilfe. Bin leider noch sehr neu mit PHP.
Gruss und Dank,
Simon
Hallo Simon.
Weiss jemand, wie man eine Varible ($Datum) eingegeben im Format (YYYY-MM-DD) in ein von PHP erkanntes Datum verwandeln kann, so dass er bei Ausgabe den Tag mitliefern würde ('I', 'd. M. Y') "Don, 25. Mär. 2005" zum Beispiel.
Das entsprechende Kapitel über Datumsfunktionen auf php.net sollte dir weiter helfen.
Wäre froh um jede hilfe. Bin leider noch sehr neu mit PHP.
Dann solltest du dir gleich ein Lesezeichen zu der Funktionsreferenz auf php.net erstellen.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo Ashura,
Ich hab das ganze durchgeschaut und bin auf dieses Skript gestossen. Leider übersteigt dies bei weitem meine PHP Fähigkeiten. Wie gesagt, ich binn noch sehr frisch:-( es geht darum, statt "24/05/2005", dieses Format zu speichern: Don, 25. Mär. 2005
<?php
function dateFormat($input_date, $input_format, $output_format) {
preg_match("/^([\w]*)/i", $input_date, $regs);
$sep = substr($input_date, strlen($regs[0]), 1);
$label = explode($sep, $input_format);
$value = explode($sep, $input_date);
$array_date = array_combine($label, $value);
if (in_array('Y', $label)) {
$year = $array_date['Y'];
} elseif (in_array('y', $label)) {
$year = $year = $array_date['y'];
} else {
return false;
}
$output_date = date($output_format, mktime(0,0,0,$array_date['m'], $array_date['d'], $year));
return $output_date;
}
$mydate = "16/04/02";
echo ('date input: '.$mydate.' -> date output: '.dateFormat($mydate, 'd/m/y', 'Y-m-d'));
?>
Vielleicht können Sie mir nochmal helfen..
Hallo Simon.
Ich hab das ganze durchgeschaut und bin auf dieses Skript gestossen. Leider übersteigt dies bei weitem meine PHP Fähigkeiten. Wie gesagt, ich binn noch sehr frisch:-( es geht darum, statt "24/05/2005", dieses Format zu speichern: Don, 25. Mär. 2005
Hierfüt nutze ich persönlich immer eine Kombination aus strtotime() und date() zur Formatierung der Ausgabe.
Für Monats- und Wochentagsbezeichungen benötigst du noch setlocale().
Vielleicht können Sie mir nochmal helfen..
Ich bevorzuge das „du“.
Einen schönen Sonntag noch.
Gruß, Ashura
Ok, danke. Habs angeschaut und auch gleich ausprobiert, aber muss sagen, das Zeug ist kompliziert. Kannst du mir vielleicht erklären, wie ich das hinkriege, das er das ganze mit dem Tag speichert? so z.B.
"Donnerstag, 26. Sep 2005"
Ist wahrscheinnlich gar nicht so kompiziert, aber ich bin wirklich noch blutiger Afänger mit PHP und das Zeug will nnicht laufen. Schlimmer aber scheint es, dass das noch niemand im Internet wollte. Kann kein Beispiel finden wo etwas so formatiert wird, und dabei diese Funktion braucht..Grr:-(..
Wäre wirklich Dankbar.
Gruss, Simon
<?php
$Datum = $_GET["Datum"];
$Info = $_GET["Info"];
$Datum2 = $strtotime ("I'', ''d. M. Y" , $Datum)
include("include.php");
$eintrag = "INSERT INTO daten (Datum, Info)
VALUES ('$Datum2', '$Info')";
$eintragen = mysql_query($eintrag) or die(mysql_error());
?>
Hallo Simon.
$Datum = $_GET["Datum"];
In welchem Format kommt $_GET["Datum"] an?
Und warum speicherst du es in einer weiteren Variable, anstatt es gleich so zu nutzen?
$Datum2 = $strtotime ("I'', ''d. M. Y" , $Datum)
Dies würde also beispielsweise „0'', ''26. Sep. 2005“ ausgeben.
Es mag umfangreich sein, aber du solltest dir die date()-Syntax noch einmal anschauen.
Noch ein kleiner Tipp: Sollte setlocale keine deutschen Monate und Wochentage erzeugen, könntest du hier mit Arrays nachhelfen.
// Die Monate von 1 bis 12
$months = array('Jan.', 'Feb.', 'Mär.', 'Apr.', 'Mai', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.');
// Die Wochentage von 0 (Sonntag) bis 6 (Samstag)
$weekdays = array('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
Damit und mit „n“ für die Monate bzw. „w“ für die Wochentage kannst du den jeweiligen deutschen Wochentag ermitteln:
$month = $months[date('n',"Dein Datumsstring")];
// date() gibt hier eine Nummer zurück, welche als Index für den $months-Array fungiert
$weekday = $weekdays[date('n',"Dein Datumsstring")];
// Dito.
Der Rest beläuft sich nur noch auf das Zusammensetzen der einzelnen Komponenten. (Tag und Jahr kannst du ja direkt ermitteln.)
Einen schönen Sonntag noch.
Gruß, Ashura
Okay, tut mir leid, dass ich das immer noch nicht geschnallt habe. Hab den Code jetzt nochmals umgestaltet:
<?php
strtotime ($Datum = $_GET["Datum"]);
$Info = $_GET["Info"];
$datum2 = date("D, d. M Y" , $Datum);
include("include.php");
$eintrag = "INSERT INTO daten (Datum, Info)
VALUES ('$datum2', '$Info')";
$eintragen = mysql_query($eintrag) or die(mysql_error());
?>
Er frissts jatz aber einfach nicht..
Gibt immer den Standartwert: 0 resp. ..1970 zurück. alles was er sollte ist ein Datum nehmen dass z.b. im Format 16.05.05 daher kommt und nacher einfach noch mit dem Tag gespeichert werden sollte.
Hof du magst mir nochmals helfen. Und Riesen Dank
Für de Tip mit dem Deutschen dank ich dir. Werd ich einschliessen, sobald das hier läuft
Hallo Nochmals.
strtotime ($Datum = $_GET["Datum"]);
Warum nicht gleich strtotime($_GET['Datum'])?
Welches Format hat $_GET['Datum']? (Beantworte diese Frage bitte endlich.)
Und ich hoffe, dass du bei $_GET['Datum'] vorher noch überprüfst, ob dies wirklich die Daten enthält, die du erwartest.
Gibt immer den Standartwert: 0 resp. ..1970 zurück. alles was er sollte ist ein Datum nehmen dass z.b. im Format 16.05.05 daher kommt und nacher einfach noch mit dem Tag gespeichert werden sollte.
Möchtest du dich nicht langsam einmal auf ein Datumsformat für die Eingabedaten festlegen?
Mögliche Formate kannst du bei den GNU date formats nachlesen.
Einen schönen Sonntag noch.
Gruß, Ashura
Hi Nochmals,
das eingabedatum wird eingegeben als 16/12/05 (dd/mm/yy).
Kann es sein, dass er damit mühe hat?
Danach werde ich es schon so festlegen, dass die Besucher wissen, Sie müssten genau dieses Format benutzen.
Hallo Simon.
das eingabedatum wird eingegeben als 16/12/05 (dd/mm/yy).
Ungünstig. Dieses Format versteht PHP nicht.
12/16/05 (mm/dd/yy) dagegen schon.
(Siehe auch den Link, den ich dir bereits gepostet habe.)
Einen schönen Sonntag noch.
Gruß, Ashura