Datum auseinanderschneiden
Datum auseinanderschneiden
Ich habe eine Simple frage:
kann ich ein Datum im Format
23.05.2008
in
20080523
Umwandeln?
Das ganze sollte mit PHP möglich sein, vielen dank schon im Vorraus, für eure Hilfe.
kann ich ein Datum im Format
23.05.2008
in
20080523
Umwandeln?
Das ganze sollte mit PHP möglich sein, vielen dank schon im Vorraus, für eure Hilfe.
Ich würde für das Datum dann aber schon ein universelleres Format wählen z.B. den UNIX-Timestamp
http://www.php.net/mktime dann kannst du mit http://www.php.net/manual/de/function.date.php das Datum so umformen wie es dir gefällt, natürlich müsstest du erst auch wieder mit explode arbeiten, sollten Doppelpunkte und sonst irgendwelche Trennungen kommen, die kein Punkt sind müsstest du diese erst mit http://www.php.net/str_replace gleich machen und dann mit explode arbeiten.
Sollten irgendwann z.B. Stunden Minuten und Sekunden dazu kommen, ist die Anpassung leichter.
http://www.php.net/mktime dann kannst du mit http://www.php.net/manual/de/function.date.php das Datum so umformen wie es dir gefällt, natürlich müsstest du erst auch wieder mit explode arbeiten, sollten Doppelpunkte und sonst irgendwelche Trennungen kommen, die kein Punkt sind müsstest du diese erst mit http://www.php.net/str_replace gleich machen und dann mit explode arbeiten.
Sollten irgendwann z.B. Stunden Minuten und Sekunden dazu kommen, ist die Anpassung leichter.
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Standardmäßig antworte ich nicht auf PMs
Wieso nicht gleich mit Regexen arbeiten ? Dadurch öffnen sich einem gleich noch viel mehr Türen und Möglichkeiten
greets h32Lg

greets h32Lg

Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40%
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40%

Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
Danke für die Vielen Antworten, leider hat mir nichts geholfen, da ich mit diesen Funktionen nicht so klarkomme, ich habe es auf eine Andere art und weise gelöst, funktioniert auch. 
Das ganze kann hier selber getestet werden, was in diesem teil des Scripts nicht integriert ist, ist die überprüfung der Zahlen, wer das bräuchte kann schnell nachfragen.
Ach ja die Zeit wird auch noch hinten angehängt, ich finde dies Praktisch mann kann so einträge Sortieren und hat eine Eindeutige ID des Wertes, oder Später des Eintrages.
http://bairan.ba.funpic.de/zahlenkehren.php --> Test des Scripts
Wichtig das datum muss folgendermassen eingegeben werden: 03.04.2008
Wichtig sind die Nullstellen!
Trozdem danke für euere Hilfe.
mfg bairan

Code: Alles auswählen
<?php
echo "Bitte gib etwas in das Formular ein";
?>
<html>
<body>
<br>
<br>
<form method="POST" action="zahlenkehren.php">
<p><input type="text" name="einlesen" size="20"><input type="submit" value="Absenden" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></p>
</form>
</body>
</html>
<?php
$zeit = strftime("%H%M%S", time()); // Für eine sehr genaue Ordnung muss noch die Zeit hin.
$zeitmit = strftime("%H:%M:%S", time()); // Zeit mit : für die Handeingabe
echo "Du hast Folgendes Datum eingegeben: "; // Ausgabe genau so wie sie eingegeben wurde.
echo $einlesen." ".$zeitmit;
echo '<br><br>';
$datumeingabe = $einlesen; // String wird definiert er hat jez den eingegebenen Wert
$zahl0 = $datumeingabe{0}; // Wert: Erste Ziffer
$zahl1 = $datumeingabe{1}; // Wert: Zweite Ziffer
$zahl2 = $datumeingabe{2}; // Wert: Dritte Ziffer
$zahl3 = $datumeingabe{3}; // Wert: Vierte Ziffer
$zahl4 = $datumeingabe{4}; // Wert: Fünfte Ziffer
$zahl5 = $datumeingabe{5}; // Wert: Sechste Ziffer
$zahl6 = $datumeingabe{6}; // Wert: Siebte Ziffer
$zahl7 = $datumeingabe{7}; // Wert: Achte Ziffer
$zahl8 = $datumeingabe{8}; // Wert: Neunte Ziffer
$zahl9 = $datumeingabe{9}; // Wert: Zehnte Ziffer
echo "Deine Eingabe ohne die Punkte: ";
echo $zahl0.$zahl1.$zahl3.$zahl4.$zahl6.$zahl7.$zahl8.$zahl9.$zeit;
echo '<br><br>';
echo "Deine Eingabe die vonm Script umgekehrt worden ist: ";
echo $zahl6.$zahl7.$zahl8.$zahl9.$zahl3.$zahl4.$zahl0.$zahl1.$zeit;
?>
Ach ja die Zeit wird auch noch hinten angehängt, ich finde dies Praktisch mann kann so einträge Sortieren und hat eine Eindeutige ID des Wertes, oder Später des Eintrages.
http://bairan.ba.funpic.de/zahlenkehren.php --> Test des Scripts
Wichtig das datum muss folgendermassen eingegeben werden: 03.04.2008
Wichtig sind die Nullstellen!
Trozdem danke für euere Hilfe.
mfg bairan
Iih, du setzt register_globals vorraus, das Script wird bei mir und vielen anderen nicht laufen da diese Funktion aus Sicherheitsgründen meist deaktiviert ist
Arbeite lieber mit $_POST['eingabe'] bzw $_GET['eingabe']
Lernst du gerade erst PHP?(Die Frage ist nicht böse gemeint, genauso wie die folgenden Fragen)
Was ist der Sinn des Scriptes?
Irgendwelche eindeutigen IDs bekommst du da nicht raus, warum muss man das Datum eingeben während man die aktuelle Uhrzeit automatisch angehängt bekommt? Entweder beides automatisch oder keins.
Warum die IDs nicht eindeutig sind?
wenn du jetzt einen Eintrag machst, und ein anderer User auch und das beide jetzt, mit dem gleichen Datum gleiche Uhrzeit, gibt es ein Problem.
Auch das mit den 9 Zahlen ist nicht wirklich sehr schön, ein Array in einer for-Schleife:
Wobei explode() auch (wie gesagt) nicht schlecht wäre, aber sag dann doch erstmal wofür das sein soll
@h32Lg
RegEx genau
Arbeite lieber mit $_POST['eingabe'] bzw $_GET['eingabe']
Lernst du gerade erst PHP?(Die Frage ist nicht böse gemeint, genauso wie die folgenden Fragen)
Was ist der Sinn des Scriptes?
Irgendwelche eindeutigen IDs bekommst du da nicht raus, warum muss man das Datum eingeben während man die aktuelle Uhrzeit automatisch angehängt bekommt? Entweder beides automatisch oder keins.
Warum die IDs nicht eindeutig sind?
wenn du jetzt einen Eintrag machst, und ein anderer User auch und das beide jetzt, mit dem gleichen Datum gleiche Uhrzeit, gibt es ein Problem.
Auch das mit den 9 Zahlen ist nicht wirklich sehr schön, ein Array in einer for-Schleife:
Code: Alles auswählen
//$zahl = array definieren, sonst könnte es Probleme mit register_globals geben
//$zahl = array();
for ($i = 0 ; $<=9; $i++)
{
//Sowäre es mit deinem Script voll kompatibel:
//$zahl$i = $datumeingabe{$i};
// Aber mit Arrays geht es auch
// $zahl[] = $datumeingabe{$i};
// Ob $datumeingabe{$i} so geht, vorsichtshalber dann doch mit substr()
$zahl[] = substr($datumeingabe, §i, 1);
// Fals das auch beim ersten nicht geht hier das 1. mit substr()
//$zahl$i = substr($datumeingabe, $i, 1);
}

@h32Lg
RegEx genau
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Standardmäßig antworte ich nicht auf PMs
Ich bin an einem Script das die Beiträge nach dem Manuell eingegebenen Datum ordent, da die meisten Eruopäer aber die Normale Datumsform gebrauchen also:
26.08.2008 so wie man es eben kennt
Also nun gibt der User das Datum so ein, danach kann mann es aber nicht Sortieren, wegen den Tagen, aber wenn man es Umkehrt so wie ich es jetzt gemacht habe, kann man es prima ordnen, wenn mann noch die Zeit anhängt wird es noch genauer geordnet.
Das ganze ist eigentich zum eintragen von Aufgaben, dann werden die die noch kommen immer zuoberst angezeigt, man hat einfach eine Ordung in der Reienfolge der Eingetragenen aufgaben.
26.08.2008 so wie man es eben kennt
Also nun gibt der User das Datum so ein, danach kann mann es aber nicht Sortieren, wegen den Tagen, aber wenn man es Umkehrt so wie ich es jetzt gemacht habe, kann man es prima ordnen, wenn mann noch die Zeit anhängt wird es noch genauer geordnet.
Das ganze ist eigentich zum eintragen von Aufgaben, dann werden die die noch kommen immer zuoberst angezeigt, man hat einfach eine Ordung in der Reienfolge der Eingetragenen aufgaben.
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Ich habe mir mal irgendwann eine (inzwischen nicht mehr ganz so kurze) Funktion gebastelt die aus allerlei unmöglichen Eingaben irgendwie ein Datum herauszulesen, da man doch häufiger mal mit schlechten Usereingaben zu kämpfen hat. Außerdem hat es mich gestört, dass ich bei der (leider notwendigerweise manuellen) Übertragung von ca. 120 Terminen mit jeweils 1 bis 3 Datumsangaben immer ein spezielles Format verwenden muss, das vielleicht nicht mal besonders schnell zu tippen ist (auf einer deutschen Tastatur ist der Punkt ja sehr weit vom Ziffernblock entfernt, das macht das Standardformat 04.05.2008 ziemlich unpraktisch bei so vielen Daten).
Daher kann mein Skript auch aus Angaben wie 4/5/8 einen 04.05.2008 machen oder auch mit einer inversen Eingabe 2008/5/4 umgehen (zwischen 8/5/4 und 4/5/8 besteht natürlich ein Unterschied, das lässt sich ja nicht trennen). Zurückgeliefert wird dann das Standard SQL Datumsformat, also 2008-05-04 das sich so in jeder SQL Abfrage verwenden ließe, alternativ auch ein Timestamp. Falls die Funktionseingabe ein Timestamp ist funktioniert die Umwandlung auch. Alle Werte mit denen die Funktion nichts anfangen kann werden durch die des aktuellen Datums ersetzt. Selbiges habe ich für Uhrzeitangaben gemacht, so dass ich durch zusammenfügen beider Ergebnisse ohne Probleme ein genaues Datum samt Uhrzeit bekommen kann. Die Funktionen gibt's auf Wunsch per PN, denn für einen Post ist es doch ein wenig viel Code.
Daher kann mein Skript auch aus Angaben wie 4/5/8 einen 04.05.2008 machen oder auch mit einer inversen Eingabe 2008/5/4 umgehen (zwischen 8/5/4 und 4/5/8 besteht natürlich ein Unterschied, das lässt sich ja nicht trennen). Zurückgeliefert wird dann das Standard SQL Datumsformat, also 2008-05-04 das sich so in jeder SQL Abfrage verwenden ließe, alternativ auch ein Timestamp. Falls die Funktionseingabe ein Timestamp ist funktioniert die Umwandlung auch. Alle Werte mit denen die Funktion nichts anfangen kann werden durch die des aktuellen Datums ersetzt. Selbiges habe ich für Uhrzeitangaben gemacht, so dass ich durch zusammenfügen beider Ergebnisse ohne Probleme ein genaues Datum samt Uhrzeit bekommen kann. Die Funktionen gibt's auf Wunsch per PN, denn für einen Post ist es doch ein wenig viel Code.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
verstehe ich noch nicht so richtig.
Wie prüfst du denn die Eingabe?
Ich kann momentan alles eingeben und es wird nicht als fehlerhaft erkannt.
Wie prüfst du denn die Eingabe?
Ich kann momentan alles eingeben und es wird nicht als fehlerhaft erkannt.
Du hast Folgendes Datum eingegeben: abcdefghijklmnop 16:45:22
Deine Eingabe ohne die Punkte: abdeghij164522
Deine Eingabe die von meinem Script umgekehrt worden ist: ghijdeab164522
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Standardmäßig antworte ich nicht auf PMs
*g*Boecki91 hat geschrieben:@h32Lg
RegEx genau


omg, Mach gleich ein Dropdownfeld mit verschiedenen Formaten zur Auswahl, dann brauchst du wenigstens keine Prüfung auf Injektionscode ^^bairan hat geschrieben:nach dem Manuell eingegebenen Datum ordent
Was das mit Regex angeht, so würde ich es sogar schärfstens empfehlen, wenn du manuelle Eingaben zulässt hast du nämlich immer wieder gerne mal Tipfehler drin. Außerdem könntest du mit preg_replace arbeiten oder gleich mysql_real_escape_string verwenden.

Du musst dabei 'n bissal an deine Sicherheit denken, ansonsten hast du bald weit mehr als nur Datumsabfragen ausgelesen.
greets h32Lg

Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40%
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40%

Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!