Avatar billede kragekjaer Praktikant
03. juli 2003 - 19:41 Der er 12 kommentarer og
1 løsning

uge-kalender

Hejsa, er der nogle der har stødt på evt. source-code til at vise en ugekalender; altså så man kun får vist ugedage, og hvor man kan gå videre til næste uge osv.....jeg har set en masse kalendere, men ikke lige sådan én. Du er måske manden for koden?
Avatar billede baitianlong Nybegynder
05. juli 2003 - 02:10 #1
Jeg tror jeg har løst det med dette lille script, som jeg har brugt 40 år på at lave (o;



tid = new Date();
dato = tid.getDate();
month = tid.getMonth();

months = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if((tid.getFullYear() % 4  == 0 && tid.getFullYear() % 100 != 0) || tid.getFullYear() % 400 == 0) {
    months[1] = 29;
}
for(i = 0; i < tid.getMonth(); i++) {
    nummerDagIAar += months[i];
}
nummerDagIAar += dato;
trace("Dag i Aar: " + nummerDagIAar);
uge = Math.ceil(nummerDagIAar / 7);
trace("Uge: " + uge);
ugedag = tid.getDay();
dage = new Array("Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør");
ugedag1 = dage[ugedag];
trace(ugedag1);
if(ugedag == 0) ugeStartDag = tid.getDate() - 6;
else if(ugedag != 0) ugeStartDag = tid.getDate() - (ugedag - 1);
if(ugeStartDag < 1)  {
    ugeStartDag += months[tid.getMonth()-1];
}
for(j = 0; j < 7; j++) {
    if(j > 5) tal = j - 7;
    else tal = j;
    if(int(ugeStartDag  + j) > months[tid.getMonth() - 1]) ugeStartDag = 1 - j;
    trace(dage[1 + tal] + " d. " + int(ugeStartDag + j));
}


Bare kopier det ind i en flash fil og se om den ikke passer nogenlunde (o;
Avatar billede baitianlong Nybegynder
05. juli 2003 - 02:44 #2
Ok, den er ikke helt optimal, den er ikke så fed i Januar :S ... men jeg må arbejde videre på det, hvis ikke andre gider (o;
Avatar billede kragekjaer Praktikant
06. juli 2003 - 13:51 #3
mange tak, jeg har også siddet selv og forsøgt noget forskelligt......så kan jeg lægge det ud når det fungerer, og omvendt.....men tak indtil videre......du skal nok få pointene
Avatar billede baitianlong Nybegynder
06. juli 2003 - 16:06 #4
Jeg prøver lige at lave en ny til dig i aften. Det kan fandme ikke være så svært, og jeg er blevet bidt/irriteret af det. Jeg har allerede version#2 undervejs (o; - Den ovenstående virker jo næsten. Den har bare lidt problemer i Januar, og omkring årsskiftet...
Avatar billede kragekjaer Praktikant
06. juli 2003 - 22:49 #5
jeg har lavet dette, men mangler stadig noget:

getDayMonthYear = function(day) {
    var days = ["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"];
    var month = ["januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"];
    var d = new Date();
    aar=d.getFullYear();
    md=d.getMonth();
    idag=d.getDate();
    nydag=Number(idag)+day;
    var e = new Date(aar,md,nydag);
    dd=days[e.getDay()]+newline+e.getDate()+". "+month[e.getMonth()]+", "+e.getFullYear();
trace(dd);
}

for (i=0; i<=30; i++) {//for at vise 30 dage frem fra nu
    getDayMonthYear(i);
    }
Avatar billede kragekjaer Praktikant
06. juli 2003 - 22:51 #6
Men det ville nu være bedst, at kunne vise fra søndag til lørdag......og så en knap "forrige uge" og en knap "næste uge"
Avatar billede baitianlong Nybegynder
07. juli 2003 - 00:07 #7
Det er også det jeg arbejder hen imod... Tricket er at finde hvilken dato, der er mandag i den pågældende uge, sådan hen over månedsskift osv... Men jeg synes nu det er meget sjovt at sidde og nørkle med (o;
Avatar billede kragekjaer Praktikant
07. juli 2003 - 02:13 #8
det er også ok, hvis man bare ser 5 dage frem inkl. idag....det er så ligemeget om det starter med fx. mandag
Avatar billede baitianlong Nybegynder
07. juli 2003 - 02:39 #9
Nu har jeg lavet den (o; Det er en lidt sindsyg kode, men hvad fanden ... Den lader til at virke (o;

http://62.199.241.199/ugeKalender.html
Avatar billede kragekjaer Praktikant
07. juli 2003 - 02:43 #10
kan du smide koden ud............sidder nemlig også og arbejder på den.....det ser lovende ud, lige bortset fra ved årsskiftet. Stabilt arbejde.
Avatar billede baitianlong Nybegynder
07. juli 2003 - 02:48 #11
Ok... Here goes (o;

----------------------------------------------------------------------------

dage = new Array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag");

//find ugedag 1. januar
now = new Date()
nytaar = new Date(now.getFullYear(), 0, 1);
dag = nytaar.getDay();
ugeDagNytaar = dage[dag];

//put alle datoer ind i et array :S
maaneder = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if((now.getFullYear() % 4 == 0 && now.getFullYear() % 100 != 0) || now.getFullYear() % 400 == 0) {
    maaneder[1] = 29;
}
datoer = new Array();
ugeDag = dag;
for(i = 0; i < 12; i++) {
    for(j = 1; j <= maaneder[i]; j++) {
        if(ugeDag == 7) ugeDag = 0;
        ugeDagNavn = dage[ugeDag];
        ugeDag++;
        dagTal++;
        datoer.push(ugeDagNavn + " d." + j + ".");
    }
}
//trace(datoer.toString());

function hvilkenMaanedForDag(dagTal) {
    maanedNavn = new Array("Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November", "December");
    blah = 0;
    found = false;
    akkuDage = 0;
    while(blah < 12 && !found) {
        akkuDage += maaneder[blah];
        if(dagTal < akkuDage) {
            return maanedNavn[blah];
            found = true;
        } else {
            blah++;
        }
    }
}

// find nærmeste mandag under dag

aktuelTid = new Date();
aktuelDato = aktuelTid.getDate();
aktuelDagNavn = dage[aktuelTid.getDay()];
smlString = aktuelDagNavn + " d." + aktuelDato + ".";
for(i = 0; i < datoer.length; i++) {
    if(smlString == datoer[i] && i > (aktuelTid.getMonth() * 30)) {
        //trace("Resultat: " + i);
        for(j = i; j > (i - 6) ; j--) {
            if(datoer[j].indexOf("Mandag") > -1) {
                naermesteMandag = j;
                opbygUge(j);
            }
        }
        break
    }
}

// opbyg Uge i tekstFelt

function opbygUge(mandagsTal) {
    _root.tekstFelt = "";
    p = 0;
    while(p < 7) {
        _root.tekstFelt += datoer[mandagsTal + p] + "\n";
        p++;
    }
    _root.mandagsTalNu = mandagsTal;
    _root.maanedFelt = hvilkenMaanedForDag(mandagsTal);
}

---------------------------------------------------------------------

Som du kan se hedder det: tekstFelt i maanedFelt, dem med indholdet i

Og så det her på knapperne:

on(release) {
    _root.mandagsTalNu -= 7; // og += 7 for frem-knappen
    _root.opbygUge(_root.mandagsTalNu);
}


(o;
Avatar billede kragekjaer Praktikant
07. juli 2003 - 02:53 #12
ok, mange tak for indsatsen, jeg vil lige granske koden, og hvis jeg kan forbedre det/eller lave noget tilsvarende smider jeg det ud.
Avatar billede baitianlong Nybegynder
07. juli 2003 - 02:57 #13
ok (o; Det var sjovt nok at lave... Og jeg tror den virker perfekt nu, ha ha

Du kan hente den som fla. fil her:
http://62.199.241.199/ugeKalender.fla
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