Datum auseinanderschneiden

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
bairan
Mitglied
Beiträge: 31
Registriert: 17.05.2006 18:13
Wohnort: Seengen
Kontaktdaten:

Datum auseinanderschneiden

Beitrag von bairan »

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.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Das könntest du z.B. mit [php:explode] lösen. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

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.
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

Wieso nicht gleich mit Regexen arbeiten ? Dadurch öffnen sich einem gleich noch viel mehr Türen und Möglichkeiten :wink:

greets h32Lg 8)
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!
bairan
Mitglied
Beiträge: 31
Registriert: 17.05.2006 18:13
Wohnort: Seengen
Kontaktdaten:

Beitrag von bairan »

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. :D

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;
?>
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
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

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:

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);

}
Wobei explode() auch (wie gesagt) nicht schlecht wäre, aber sag dann doch erstmal wofür das sein soll :wink:

@h32Lg
RegEx genau
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
bairan
Mitglied
Beiträge: 31
Registriert: 17.05.2006 18:13
Wohnort: Seengen
Kontaktdaten:

Beitrag von bairan »

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.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

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.
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.
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

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.

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
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

Boecki91 hat geschrieben:@h32Lg
RegEx genau
*g* :D :D *g*
bairan hat geschrieben:nach dem Manuell eingegebenen Datum ordent
omg, Mach gleich ein Dropdownfeld mit verschiedenen Formaten zur Auswahl, dann brauchst du wenigstens keine Prüfung auf Injektionscode ^^

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. :roll:

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

greets h32Lg 8)
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!
Antworten

Zurück zu „Coding & Technik“