Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-07-2006, 19:47   #1 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
nach Datum Sortieren

hallo zusammen - ich mal wieder

ich habe ein problem daten (plural von datum) korrekt zu sortieren.


ich erhalte ein array mit zb folgenedem inhalt
die daten sin um ursprungsarray nicht chronologisch geordnet
PHP-Code:
var arr =["10.10.2005","5.7.2006","8.5.1995"]; //usw. 
bevor ich nun anfange die daten einzeln zu zerlegen und die zeitabschnitte also tag.monat.jahr einzelen gegen einader vergeleiche ist die frage ob es eine möglichkeit gibt diese einträge ihres datums richtig zusortieren ?

bin für vorschläge offfen
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 12-07-2006, 20:48   #2 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
hallo,
hier ist ein suchalgorithmus, der allerdings den weg geht, das array in Datums-objekte zu verwandeln (weil sich diese einfach besser vergleichen lassen), und dann zurück zum String in der gewünschten form:
ActionScript:
  1. var daten:Array = new Array ("10.10.2005","5.7.2006","8.5.1995");
  2.  
  3. trace(daten);
  4. dateSort(daten);
  5. trace(daten);
  6.  
  7. function dateSort (daten:Array) :Void {
  8.     //Daten-Strings in Date-Objekte wandeln
  9.     for (var i:Number = 0; i < daten.length; i++) {
  10.         var aTemp:Array = daten[i].split('.');
  11.         daten[i] = new Date(aTemp[2], aTemp[1], aTemp[0]);
  12.     }
  13.    
  14.     //Array der Date-Objekte mit einem "BubbleSort"-Verfahren
  15.     //nach der Eigenschaft .getTime() sortieren
  16.     var h:String;
  17.     for (var i:Number = daten.length; i > 0; i--) {
  18.         for (var j:Number = 0; j < i-1; j++) {
  19.             if (daten[j].getTime() > daten[j+1].getTime()) {
  20.                 h = daten[j];
  21.                 daten[j] = daten[j+1];
  22.                 daten[j+1] = h;
  23.             }
  24.         }
  25.     }
  26.    
  27.     //Date-Objekte als String zurückschreiben
  28.     for (var i:Number = 0; i < daten.length; i++) {
  29.         daten[i] = daten[i].getDate() + "." + daten[i].getMonth() + "." + daten[i].getFullYear();
  30.     }
  31. }
gruß janosch


edit:
oh entschuldige - hab gar nicht gesehen, dass es hier um AS1 geht....
das ^^ ist natürlich strikte as2.0 syntax - ich versuchs noch mal mit AS1

Geändert von janoshnosh (12-07-2006 um 20:54 Uhr)
janoshnosh ist offline   Mit Zitat antworten
Alt 12-07-2006, 20:57   #3 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
AS 1.0
PHP-Code:
var daten = ["10.10.2005","5.7.2006","8.5.1995"];

trace(daten);
dateSort(daten);
trace(daten);

function 
dateSort (daten) {
    for (var 
0daten.lengthi++) {
        var 
aTemp daten[i].split('.');
        
daten[i] = new Date(aTemp[2], aTemp[1], aTemp[0]);
    }
    
    for (var 
daten.length0i--) {
        for (var 
0i-1j++) {
            if (
daten[j].getTime() > daten[j+1].getTime()) {
                
daten[j];
                
daten[j] = daten[j+1];
                
daten[j+1] = h;
            }
        }
    }
    
    for (var 
0daten.lengthi++) {
        
daten[i] = daten[i].getDate() + "." daten[i].getMonth() + "." daten[i].getFullYear();
    }

janoshnosh ist offline   Mit Zitat antworten
Alt 12-07-2006, 21:08   #4 (permalink)
Achim Math.PI
 
Benutzerbild von bloba
 
Registriert seit: Jul 2001
Ort: cool Colonia
Beiträge: 11.642
cool danke . hab ich bei meiner suche wohl übersehn
__________________
gruß bloba

2 x onkel² b_d
bloba ist offline   Mit Zitat antworten
Alt 12-07-2006, 21:17   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
kürzer und geht auch mit dezember ;-)
Code:
var daten = ["10.10.2005", "5.7.2006", "8.12.1995"];
dateSort(daten);
trace(daten);
//
function dateSort(daten) {
	for (var i in daten) {
		var t = daten[i].split('.');
		daten[i] = Number(new Date(t[2], t[1]-1, t[0]));
	}
	daten.sort(Array.NUMERIC);
	for (var i in daten) {
		var t = new Date(daten[i]);
		daten[i] = t.getDate()+"."+(t.getMonth()+1)+"."+t.getFullYear();
	}
}
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (12-07-2006 um 21:43 Uhr)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele