Datum richtig sortieren - auch "vor Christi", wie gehe ich ran?
Mischa
- javascript
Hallo, ich bin Anfänger in Sachen JavaScript und habe folgendes Problem zu lösen:
Mein Web-Content-Management-System kann Werte numerisch und alphabetisch sortieren. Nun soll der Redakteur eines Artikels eine Jahreszahl (oder ein komplettes Datum) eingeben und die Seite soll dann mit einem HIDDEN-Feld (zum Sortieren) gespeichet werden.
Die Daten können aber sowohl nach als auch vor Christi liegen (Chronik).
1. Wie bekomme ich das eingegebene Datum so aufbereitet, dass ich es chronologisch richtig sortieren kann (numerisch), d.h. 500 v. Chr. ist "früher" als 100 v. Chr. und beides ist früher als 2004 n. Chr.?
2. Wie bekomme ich den Wert zur Laufzeit in ein HIDDEN-Feld geschrieben?
Ich wäre Euch für ein paar mehr oder weniger ausführliche Hinweise oder Vorschläge sehr dankbar!
Freundliche Grüße, Mischa
Ahoi,
Mein Web-Content-Management-System kann Werte numerisch und alphabetisch sortieren. Nun soll der Redakteur eines Artikels eine Jahreszahl (oder ein komplettes Datum) eingeben und die Seite soll dann mit einem HIDDEN-Feld (zum Sortieren) gespeichet werden.
wieso brauchst du ein hidden-Field zum sortieren? schicke doch einfach die Eingabe des Redakteurs an den Server.
Die Daten können aber sowohl nach als auch vor Christi liegen (Chronik).
- Wie bekomme ich das eingegebene Datum so aufbereitet, dass ich es chronologisch richtig sortieren kann (numerisch), d.h. 500 v. Chr. ist "früher" als 100 v. Chr. und beides ist früher als 2004 n. Chr.?
Gegenfrage: wie liegen denn die Daten in der Datenbank? Du hast doch eine Datenbank? Wie sieht das alles serverseitig aus?
- Wie bekomme ich den Wert zur Laufzeit in ein HIDDEN-Feld geschrieben?
meineform.meinformfeld.value = "meinwert";
aber wie gesagt ist mir der Zweck des Feldes unklar.
Gruß,
MrWurf
Hello,
wieso brauchst du ein hidden-Field zum sortieren? schicke doch einfach die Eingabe des Redakteurs an den Server.
wahrscheinlich wird hier die aktuelle Sortierung einer Liste vermerkt?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi,
wieso brauchst du ein hidden-Field zum sortieren? schicke doch einfach die Eingabe des Redakteurs an den Server.
wahrscheinlich wird hier die aktuelle Sortierung einer Liste vermerkt?
Es wird doch _immer_ nach dem Datum sortiert, die Sortierregel muss also nirgens gespeichert werden. Ich habs so verstanden, dass die Nutzereingabe da rein soll... wozu auch immer. Aufklärung seitens des Threaderstellers ist wohl vonnöten.
Gruß,
MrWurf
Hi,
wieso brauchst du ein hidden-Field zum sortieren? schicke doch einfach die Eingabe des Redakteurs an den Server.
wahrscheinlich wird hier die aktuelle Sortierung einer Liste vermerkt?
Es wird doch _immer_ nach dem Datum sortiert, die Sortierregel muss also nirgens gespeichert werden. Ich habs so verstanden, dass die Nutzereingabe da rein soll... wozu auch immer. Aufklärung seitens des Threaderstellers ist wohl vonnöten.
Ggenfrage: Wie sortierst Du die Jahreszahlen 400 v. Chr., 200 v. Chr., 1945, 2001, 2003?
Der Redakteur gibt in ein Input-Feld einfach _Zahlen_ ein. Ich kann ihn lediglich dazu bringen, die Jahresahlen wenigstens vierstellig zu machen (0400) und einen Haken für "vor Christi" zu setzen. Dann schickt er die Datei mit dem Datum zum CMS. Ich brauche doch aber einen numerischen Wert, der der chronologischen Reihenfolge entspricht. Grob gesagt: 400 vor Christi bekommt die "01" zugewiesen und 2004 eine "04". dann kommt auch "400 vor Christi" vor "200 vor Cristi" denn das war ja 200 Jahre eher - obwohl die Jahreszahl einen höheren Wert hat...
hi,
Ggenfrage: Wie sortierst Du die Jahreszahlen 400 v. Chr., 200 v. Chr., 1945, 2001, 2003?
die vor christi sortiere ich nummerisch absteigend, die nach christi aufsteigend.
ja, das kennzeichen, ob vor oder nach christi ist dabei auch ein sortierkriterium, und zwar eines mit höherer priorität.
gruß,
wahsaga
hi,
Ggenfrage: Wie sortierst Du die Jahreszahlen 400 v. Chr., 200 v. Chr., 1945, 2001, 2003?
die vor christi sortiere ich nummerisch absteigend, die nach christi aufsteigend.
ja, das kennzeichen, ob vor oder nach christi ist dabei auch ein sortierkriterium, und zwar eines mit höherer priorität.
Deine Idee, nach zwei Feldern nacheinander zu Sortieren ist gut, ich kann aber mit dem CMS leider nur in eine Richtung sortieren, darum nützt mir das leider hier nix.
Ich muss die Werte irgendwie so umrechnen, dass ich den Zeitstrahl in diese richtige Reihenfolge bringe:
"..." -> "400 v. Christi" -> "200 v. Christi" -> "100 v. Christi" -> "50 v. Christi" -> "GEBURT CHRISTI" -> "50 n. Chr." -> "..."
*uff*
Wer den Gregorianischen Kalender zur Grundlage unserer (westlichen?) Zeitrechnung gemacht hat, gehört verhauen!
Es wäre doch so schön, wenn wir einen physikalischen Kalender hätten - dann ginge alles mit dem Urknall los... ;)
Ahoi Mischa
Ggenfrage: Wie sortierst Du die Jahreszahlen 400 v. Chr., 200 v. Chr., 1945, 2001, 2003?
die vor christi sortiere ich nummerisch absteigend, die nach christi aufsteigend.
Deine Idee, nach zwei Feldern nacheinander zu Sortieren ist gut, ich kann aber mit dem CMS leider nur in eine Richtung sortieren, darum nützt mir das leider hier nix.
wenn du "2000 v.Chr" als -2000 in die DB steckst, dann brauchst du keine Unterscheidung bei der Sortierung.
Ich muss die Werte irgendwie so umrechnen, dass ich den Zeitstrahl in diese richtige Reihenfolge bringe:
"..." -> "400 v. Christi" -> "200 v. Christi" -> "100 v. Christi" -> "50 v. Christi" -> "GEBURT CHRISTI" -> "50 n. Chr." -> "..."
und was ist mit v.u.Z. (für die heidnischen Ossis? :-))
Wer den Gregorianischen Kalender zur Grundlage unserer (westlichen?) Zeitrechnung gemacht hat, gehört verhauen!
Es wäre doch so schön, wenn wir einen physikalischen Kalender hätten - dann ginge alles mit dem Urknall los... ;)
bei den Juden gehts glaube ich bei der Schöpfung los, das ist EDVtechnisch sehr vernünftig.
Gruß,
MrWurf
hi,
wenn du "2000 v.Chr" als -2000 in die DB steckst, dann brauchst du keine Unterscheidung bei der Sortierung.
und eben dieses "minus" bzw. "plus" (was man dann idR. auch weglassen kann) wäre ja z.b. ein solches weitere entscheidungkriterium :-)
gruß,
wahsaga
hi,
wenn du "2000 v.Chr" als -2000 in die DB steckst, dann brauchst du keine Unterscheidung bei der Sortierung.
und eben dieses "minus" bzw. "plus" (was man dann idR. auch weglassen kann) wäre ja z.b. ein solches weitere entscheidungkriterium :-)
aber eines, um dessen Entscheidung man sich nicht kümmern muss, mein lieber haarspalta. ;-)
Gruß,
MrWurf
wenn du "2000 v.Chr" als -2000 in die DB steckst, dann brauchst du keine Unterscheidung bei der Sortierung.
Doch! Erstens habe ich keine Datenbank, zweitens wäre "-500" dann numerisch gesehen "eher" als "-2000" was chronologisch ja nicht stimmt.
..." -> "400 v. Christi" -> "200 v. Christi" -> "100 v. Christi" -> "50 v. Christi" -> "GEBURT CHRISTI" -> "50 n. Chr." -> "..."
und was ist mit v.u.Z. (für die heidnischen Ossis? :-))
Ein Ossi findet sich auch so zurecht. Das "v. Chr." schreibe ich natürlich nur für Wessis, die mit "v.u.Z." nichts anfangen können! ;-) Außerdem heißt ja "v.u.Z." "vor UNSERER Zeitrechnung" - Wessis und Ossis hatten ja ein paar Jahre eine unterschiedliche Zeitrechnung - die einen vorwärts, die anderen rückwärts - zumindest technologisch...
Wer den Gregorianischen Kalender zur Grundlage unserer (westlichen?) Zeitrechnung gemacht hat, gehört verhauen!
Es wäre doch so schön, wenn wir einen physikalischen Kalender hätten - dann ginge alles mit dem Urknall los... ;)
bei den Juden gehts glaube ich bei der Schöpfung los, das ist EDVtechnisch sehr vernünftig.
Richtig, endlich mal jemand, der damals schon mitgedacht hat. Da sie angeblich auch die ersten Monotheisten waren, könnte man das auch ruhigen Gewissens so übernehmen (die müssens ja wissen). Aber nein, da musste sich wieder jemand hinsetzen und einen solchen Unsinn fabrizieren. ;)
hi,
wenn du "2000 v.Chr" als -2000 in die DB steckst, dann brauchst du keine Unterscheidung bei der Sortierung.
Doch! Erstens habe ich keine Datenbank, zweitens wäre "-500" dann numerisch gesehen "eher" als "-2000" was chronologisch ja nicht stimmt.
hä?
-2000 ist eine kleinere zahl als -500, da sind wir uns doch wohl so weit hoffentlich einig, was unsere sichtweise auf die allgemein übliche mathematik angeht, oder?
und jetzt erkläre mir bitte, in welcher zeitrechnung _du_ dich befindest, in der -500, also 500 v.Chr. _nicht_ "näher" an unserer gegenwart sein soll, als -2000 bzw. 2000 v.Chr. ...?
gruß,
wahsaga
-2000 ist eine kleinere zahl als -500, da sind wir uns doch wohl so weit hoffentlich einig, was unsere sichtweise auf die allgemein übliche mathematik angeht, oder?
Gern! ;)
und jetzt erkläre mir bitte, in welcher zeitrechnung _du_ dich befindest, in der -500, also 500 v.Chr. _nicht_ "näher" an unserer gegenwart sein soll, als -2000 bzw. 2000 v.Chr. ...?
In der Zeitrechnung eines "dümmlichen" Redaktionssystems.
Die Sortierung dieses CMS (dessen Name hier nicht genannt werden möchte ;) funzt leider nicht so. Für dieses Teil sind Minus-Zeichen scheinbar nicht relevant.
Naja, ich hab das Problem vielleicht auch schlecht beschrieben... sorry. Ich hab doch aber nicht umsonst um ein Script gebettelt, was mir sortierbare Zahlen ohne Vorzeichen erzeugt...
wenn du "2000 v.Chr" als -2000 in die DB steckst, dann brauchst du keine Unterscheidung bei der Sortierung.
Doch! Erstens habe ich keine Datenbank, zweitens wäre "-500" dann numerisch gesehen "eher" als "-2000" was chronologisch ja nicht stimmt.
-500 ist definitiv größer als -2000, selbst in Perl.
Also ich würde mit Perl die Zeiteinträge aus den HTML-Dateien rausgreppen, in einen Hash als Keys packen (die Namen der HTML-Dateien an values), die Keys des Hashes absteigend sortieren (perldoc -f sort) und die values als sortierten Linkliste ausgeben.
Wenn du nicht jedesmal alle Dateien durchsuchen willst, solltest du eine Indexdatei anlegen, die den o.g. Hash in einem geeigneten Format enthält.
Gruß,
MrWurf
Hello,
Ein Ossi findet sich auch so zurecht. Das "v. Chr." schreibe ich natürlich nur für Wessis, die mit "v.u.Z." nichts anfangen können! ;-) Außerdem heißt ja "v.u.Z." "vor UNSERER Zeitrechnung" - Wessis und Ossis hatten ja ein paar Jahre eine unterschiedliche Zeitrechnung - die einen vorwärts, die anderen rückwärts - zumindest technologisch...
Da meisnt Du sicher die letzten zehn Jahre. Da ging es in Weesiland nur rückwärts, sodass heute Hartz & Co. eine Chance haben, uns ihre feudalistischen Gesezte überzustülpen. Ich Ossilang ging es doch die letzen zehn bis 15 Jahre nur vorwärts.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
aber wie gesagt ist mir der Zweck des Feldes unklar.
:-) Na wenn man von einer Datenbank ausgeht vielleicht. Dieses Redaktionssystem hält die Daten zum Objekt im Backend in Form von Meta-Angaben. Die fertigen Seiten werden auf einen "ganz normalen" Webserver (Apache, IIS) veröffentlicht.
Die Sortierung, die ich hier vornehmen will, erfolgt mittels Scripts (Perl, im Redaktionssystem integriert), welche die gewünschten HIDDEN-Felder auswerten und die Sortierung vornehmen. Dann werden die Daten in ein vordefiniertes Template, z. Bsp. für eine Übersichtsseite, geschrieben und als fertige HTML-Site auf den Server gelegt. Das Datum wird dann sowohl in der HTML-Site als Jahreszahl stehen als auch im HIDDEN-Feld. Nur könnte man dort einen Wert generieren, der sich zum Sortieren eignet (Millisekunden etc.?)
Ich hoffe ich konnte etwas Klarheit schaffen, was mein Vorhaben angeht.
Grüße, Mischa
Hello,
- Wie bekomme ich das eingegebene Datum so aufbereitet, dass ich es chronologisch richtig sortieren kann (numerisch), d.h. 500 v. Chr. ist "früher" als 100 v. Chr. und beides ist früher als 2004 n. Chr.?
Das Datum ist immer noch relativ ==> ante Christum/post Christum
Das beste ist also, die Jahreszahl abzuspalten, damit sie beliebig als Ineteger gewertet werden kann. Der Rhythmus des Jahres scheint ja zumindest in den letzten 4.000 Jahren gleich geblieben zu sein.
UnixTimesamp geht zwar auch in die Vergangenheit (negativer Timestamp bei einigen Funktionen, auf Kosten der Zukunft) und in in die Zukunft, ist aber sehr kurzsichtig angelegt.
Eine Klarschriftweise ist da immernoch die beste. Zum Rechnen mit dem Datum musst Du nur das Monatsraster und das Schaltjahrraster als Datei (Array) ablegen. Dann werden die Datumsfunktionen plötzlich gaaaanz schnell. Die paar hundert Bytes für die Sprungtabellen mahcen heute nichts mehr aus, die Rechenzeit, die bei empirischer Ermittlung der Referenzzahlen drauf geht, aber schon.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom