Avatar billede piratpolle Nybegynder
19. august 2004 - 10:00 Der er 10 kommentarer

date range og SO

Hej eksperter.

Jeg har en masse SO´s. Hvor jeg gerne vil læse nogle valgt inde  for en bestem date-range. De har allesammen navnet d_2004-08-18, d_2004-08-19 o.sv.- Er det ghodt nok?

Hvordan finder jeg dem som er indenfor min 2 valgte datoer og hvordan sorterer jeg dem rigtigt så de kommer i rækkefølge.

Spørg hvis i vil vide mere.
Avatar billede piratpolle Nybegynder
19. august 2004 - 10:02 #1
glemte lige dato formatet : http://www.eksperten.dk/spm/530104

2004_08_19
Avatar billede _k Nybegynder
19. august 2004 - 10:18 #2
Du kan bruge sort() til at sortere et array, så hvis du smider din datoer ind i et sådan, kan du snildt få orden på dem:

var mitArray:Array = new Array("d_2004-08-18","d_2003-11-31", "d_2004-08-20","d_2004-08-19","d_2004-10-01");
trace(mitArray.sort());

Du kan i princippet også bruge sort til at validere om en dato ligger inden for et bestemt interval. Hvis du laver et array med dine til- og fra-datoer på de to første pladser og derefter push'er den dato du vil tjekke til arrayet, kan du ved at sort()'e på det, se om datoen er indenfor - det er den, hvis den bliver placeret i midten.
Avatar billede piratpolle Nybegynder
19. august 2004 - 10:24 #3
Jeg tænkte på om jeg ikke bare kunne tjekke om mit SO´s hed noget der var større end første dato og mindre end den sidste?

Når jeg bruger dateChooser komponenten og vender datoen om er det jo for nemmere at kunne tjekke for "størrelse"
Avatar billede _k Nybegynder
19. august 2004 - 10:34 #4
Rigtigt nok, men if-sætningernes > og < virker kun på tal, og fucker pænt op med datokonverteringer hvor der optræder bindestreger eller andre specialtegn. Valget for dig står derfor imellem at strippe dine datoer for specialtegn og tjekke dag for dag, måned for måned og år for år, eller bruge mit sort()-forslag.
(Jeg skal ikke udelukke at der er en bedre og hurtigere måde at gøre det på, men så kan jeg ikke selv lige gennemskue den!)
Avatar billede piratpolle Nybegynder
19. august 2004 - 10:36 #5
det er ikke noget problem at strippe bindestregerne - jeg kan også godt udelade dem. d_ foran bliver dog stående - Men det kan jo også strippes når der tjekkes.
Avatar billede _k Nybegynder
19. august 2004 - 10:39 #6
Yep - og hvis det er den løsning du ønsker, så gå i krig med den og spørg til, hvis det driller.
Avatar billede barklund Nybegynder
19. august 2004 - 10:45 #7
Du kan gøre det som:

function f(t) {
    return t < 10 ? "0" + t : t;
}
function mellemDatoer(fra, til) {
    var ret = new Array();
    fra = new Date(fra.getFullYear(), fra.getMonth(), fra.getDate());
    til = new Date(til.getFullYear(), til.getMonth(), til.getDate());
    for (; fra <= til; fra.setTime(fra.getTime() + 86400000)) {
        ret.push(eval("d_" + fra.getFullYear() + "_" + f(fra.getMonth() + 1) + "_" + f(fra.getDate())));
    }
    return ret;
}
var d_2004_08_17 = "17";
var d_2004_08_18 = "18";
var d_2004_08_19 = "19";
var d_2004_08_20 = "20";
var d_2004_08_21 = "21";
trace(mellemDatoer(new Date(2004, 7, 18), new Date(2004, 7, 20)));

--
Morten Barklund
Avatar billede _k Nybegynder
19. august 2004 - 10:58 #8
Hæ, hæ - det var lige den funktion jeg ikke selv gad pusle med ;o) Er det dumt at mene, at den her er enklere (eller måske mindre skudsikker?):

fra = "d_2004_08_17";
til = "d_2004_08_22";

function mellemDatoer(dato) {
  var datoArray = new Array(til, fra);
  datoArray.push(dato);
  datoArray.sort();
  if(datoArray[0] ==fra && datoArray[2] == til) {
    trace("datoen er indenfor intervallet");
    }
  else {
    trace("datoen er udenfor intervallet");
  }
}

mellemDatoer("d_2004_08_20");
Avatar billede barklund Nybegynder
19. august 2004 - 11:23 #9
Men så du jo ikke en liste af samtlige datoer i intervallet? Jeg forstår det som: giv mig en liste af samtlige objekter hørende til datoerne mellem a og b.
Avatar billede _k Nybegynder
19. august 2004 - 11:46 #10
Ok, sådan forstod jeg det ikke helt. Men piratpolle må lige træde til og sige om han har fået det han søgte.....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester