Avatar billede axkris Nybegynder
19. juli 2005 - 12:00 Der er 33 kommentarer og
1 løsning

Havde været smart med en getDateName-funktion

Hej alle

Det ville have været smart, hvis der i JS fandtes en funktion, som man kunne bruge til at udskrive navnet på ugedagen, f.eks. "tirsdag".

Jeg havde derfor håbet, at der man kunne skrive getDateName(), men det kan man ikke. Hvad kan man så?
Avatar billede webt Nybegynder
19. juli 2005 - 12:12 #1
Den nemmeste måde er at lave et array med ugedagenes navne i (start med søndag) og så hente det ud vha getDay(), fx:

dag=new Date();
dage=new Array("Søndag","Mandag","tirsdag","onsdag","torsdag","fredag","lørdag");
dagNavn=dage[dag.getDay()];

Så har du navnet på dagen i dagNavn

Håber du kan bruge det

Mvh
Martin
Avatar billede axkris Nybegynder
19. juli 2005 - 12:12 #2
Nu har jeg lavet denne i mangel på bedre. Kan det gøres smartere?

strDate = new Date() + ""
strDate = strDate.substring(0, 3);

if (strDate == "Mon") {
    alert("Mandag");
}

if (strDate == "Tue") {
    alert("Tirsdag");
}

if (strDate == "Wed") {
    alert("Onsdag");
}

if (strDate == "Thu") {
    alert("Torsdag");
}

if (strDate == "Fri") {
    alert("Fredag");
}

if (strDate == "Sat") {
    alert("Lørdag");
}

if (strDate == "Sun") {
    alert("Søndag");
}
Avatar billede axkris Nybegynder
19. juli 2005 - 12:13 #3
Ok, pastet med 5 sekunders mellemrum ;-)
Avatar billede webt Nybegynder
19. juli 2005 - 12:14 #4
Heh ja tænkte også da jeg havde postet,,, hmm er det mit indlæg den siger der er det nye

Men ja ovenstående skulle overflødiggøre alle de iffer

Har dog ikke testet det så check lige så kan du vende tilbage

Mvh
Martin
Avatar billede axkris Nybegynder
19. juli 2005 - 12:18 #5
Det virker fint og getDay() gør det hele meget nemmere.

Takker for hjælpen - tryk svar :-)
Avatar billede webt Nybegynder
19. juli 2005 - 12:19 #6
Det gør jeg

Glad for at kunne hjælpe :)

Ha en fortsat god dag
Martin
Avatar billede axkris Nybegynder
19. juli 2005 - 12:21 #7
Det er mig som takker :-)
Avatar billede axkris Nybegynder
19. juli 2005 - 12:21 #8
Og hav også en go dag :-D
Avatar billede webt Nybegynder
19. juli 2005 - 12:22 #9
Tak tak :)
Avatar billede axkris Nybegynder
19. juli 2005 - 12:34 #10
Kan du også hjælpe mig med at gøre det til en funktion, hvor jeg kan fylde datoer ind i for at se, hvilken ugedags-navn de har?

// kan også indsættes som noget andet end 1/1-2001
getDayName("1/1-2001");

//pre:  dd/mm/åååå sendes ind
//post: returnerer navnet på ugedagen

function getDayName(strDate) {
   
    //strDate = new Date();
    ??????????????????????
    strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
    return strDays[strDate.getDay()];

}
Avatar billede webt Nybegynder
19. juli 2005 - 13:03 #11
Hvis du har mulighed for at indskrive dato som fx:
19 July, 2005


kan du lave den næsten som du har den:

function getDayName(strDate) {
  testDato=new Date(strDate);
  strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
  return strDays[testDato.getDay()];
}

getDayName("19 July, 2005");

Hvis du ikke har mulighed for at indskrive den sådan, så ved jeg ikke lige hvad der skal til

Mvh
Martin
Avatar billede axkris Nybegynder
19. juli 2005 - 13:05 #12
Det har jeg desværre ikke mulighed for, men prøver mig ad :-)
Avatar billede roenving Novice
19. juli 2005 - 13:07 #13
Men hvis input er dd/mm/åååå kan man:

function getDayName(strDate) {
    strDate = strDate.split(/ \/-/);
    strDate = new Date(strDate[2],(parseInt(strDate[1],10)-1,parseInt(strDate,10));
    strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
    return strDays[strDate.getDay()];
}


Så accepterer den mellemrum, skråstreg og bindestreg som deler, f.eks. 31/12/2000, 31/12-2000, 31-12-2000, 31 12 2000 m.m.fl.
Avatar billede webt Nybegynder
19. juli 2005 - 13:09 #14
^ Mesteren har talt :)

Der kan jeg ikke være med heh

Mvh
Martin
Avatar billede roenving Novice
19. juli 2005 - 13:09 #15
Hov en ( for meget:

    strDate = new Date(strDate[2],parseInt(strDate[1],10)-1,parseInt(strDate,10));
Avatar billede axkris Nybegynder
19. juli 2005 - 13:10 #16
webt>>

Men nu siger den godt nok at 1/1-2001 er en mandag, og det er jo korrekt, så det virker jo.

Takker igen :-)

Jeg kigger nu på dit forslag roenving.
Avatar billede roenving Novice
19. juli 2005 - 13:12 #17
-- og hvis du _kun_ vil tillade / som deletegn, kan du:

    strDate = strDate.split("/");
Avatar billede webt Nybegynder
19. juli 2005 - 13:13 #18
Hmm ja det ser da egenlig ud til at virke i det format også

Synes jeg ikke det gjorde da jeg lige testede første gang, der kan man bare se
men der skal det så lige huskes at det er måned/dag ikke dag/måned
Avatar billede axkris Nybegynder
19. juli 2005 - 13:13 #19
Hos mig siger den "undefinded" ved begge:

getDayName("01-01-2001");
getDayName("1/1-2001");

function getDayName(strDate) {
    strDate = strDate.split(/ \/-/);
    strDate = new Date(strDate[2],parseInt(strDate[1],10)-1,parseInt(strDate,10));
    strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
    alert(strDays[strDate.getDay()]);
}
Avatar billede axkris Nybegynder
19. juli 2005 - 13:14 #20
undefinded = undefined
Avatar billede roenving Novice
19. juli 2005 - 13:14 #21
Iøvrigt har jeg de sidste par år lavet en kortere udgave af typecastingen, men jeg nåede lige forlert rundt i mine tanker, så jeg forsikrede mig (i denne situation !-) unødigt ...

    strDate = new Date(strDate[2],+strDate[1]-1,+strDate[0]);

-- og jeg opdagede selvfølgelig endnu en fejl ...
Avatar billede axkris Nybegynder
19. juli 2005 - 13:17 #22
Men ud over det kan jeg jo lægge mig fast på et bestemt dato-format, da jeg selv bestemmer inputtet, fordi det kommer fra en anden funktion (og ikke fra en brugers direkte indtastning), så jeg kan bare beslutte at have format som "1/1-2001". And so it is :-)
Avatar billede axkris Nybegynder
19. juli 2005 - 13:18 #23
Stadig undefined:

getDayName("1/1-2001");

function getDayName(strDate) {
    strDate = strDate.split(/ \/-/);
    strDate = new Date(strDate[2],+strDate[1]-1,+strDate[0]);
    strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
    alert(strDays[strDate.getDay()]);
}
Avatar billede roenving Novice
19. juli 2005 - 13:18 #24
Hvis du havde brug for meget datoformattering, nedtælling eller andet, kunne du måske også bruge mine Date-udvidelser, som default snakker dansk, men hvis man gider kan man få den til at snakke tysk, fransk osv. (engelsk er med som default ekstra-modul !-)

http://roenving.users.whitehat.dk/date/roenvingDate.html
Avatar billede axkris Nybegynder
19. juli 2005 - 13:19 #25
Men ud over det, så fungerer følgende fint nok:

getDayName("1/1-2001");

function getDayName(strDate) {
  testDato=new Date(strDate);
  strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
  alert(strDays[testDato.getDay()]);
}
Avatar billede axkris Nybegynder
19. juli 2005 - 13:21 #26
Kigger på din zippet kode nu.
Avatar billede roenving Novice
19. juli 2005 - 13:23 #27
Sorry, jeg havde glemt at lave split-karaktererne til et enten/eller ...

    strDate = strDate.split(/[ \/-]/);
Avatar billede webt Nybegynder
19. juli 2005 - 13:23 #28
Ja men det er jo noget af en tidsbesparer roenving, den er hermed bookmarket til næste gang jeg skal rode med sådanne ting i JS
Avatar billede axkris Nybegynder
19. juli 2005 - 13:25 #29
webt>>

hvis man skal bruge din løsning, som som sagt fungerer fint, så skal man bare lige være opmærksom på, at måned skal før dag (det er jo det amerikanske format vi kører med).

getDayName("m/d-åååå");
Avatar billede axkris Nybegynder
19. juli 2005 - 13:28 #30
Men det behøver man ikke med din version, roenving, så den snupper jeg.

getDayName("1/2-2001");

function getDayName(strDate) {
  testDato=new Date(strDate);
  strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
  alert(strDays[testDato.getDay()]);
}

getDayName2("2/1-2001");

function getDayName2(strDate) {
    strDate = strDate.split(/[ \/-]/);
    strDate = new Date(strDate[2],+strDate[1]-1,+strDate[0]);
    strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
    alert(strDays[strDate.getDay()]);
}

Begge alert'er de mandag, hvilket er korrekt :-)
Avatar billede axkris Nybegynder
19. juli 2005 - 13:29 #31
vrøvl:

Begge alert'er de mandag, hvilket er korrekt :-)

=

Begge alert'er de TIRSDAG, hvilket er korrekt :-)
Avatar billede roenving Novice
19. juli 2005 - 20:53 #32
Tjah, et par småfejl hist og pist, men f.eks. sådan:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html,body{height:100%;margin:0px;border:0px;padding:0px;}
</style>
<script type="text/javascript">
var intSelects = 0;
function appendSelect(f){
 
    var isMonth = intSelects==0?false:f.elements["isMonth"][1].checked;
    var actDate = intSelects==0?new Date():new Date(f.elements["Date_Year"+intSelects].value, f.elements["Date_Month"+intSelects].selectedIndex, f.elements["Date_Day"+intSelects].selectedIndex + (isMonth?29:8));
       
    var thisDay = actDate.getDate();
    var thisMonth = actDate.getMonth();
    var thisYear = actDate.getFullYear();

    var thisDayName = getDayName(actDate);
   
    //bør egentlig stå til sidst i funktionen... men nu er det forsent ;-)
      intSelects++;   
     
    var dash = document.createTextNode(" ");
    var mother = document.getElementById('motherDiv');
   
    var newTabel = document.createElement("TABLE");
    newTabel.style.width = "100%";
    newTabel.style.border = "1px solid black";
    mother.appendChild(newTabel);

    var newTBody = document.createElement("TBODY");
    newTabel.appendChild(newTBody);
 
    var newTR = document.createElement("TR");
    newTBody.appendChild(newTR);
 
    var newTD = document.createElement("TD");
    newTD.style.height = "35px";
       
    newCheck = document.createElement("INPUT");
    newCheck.type = 'checkbox';
    newCheck.name = 'Cancel_date' + intSelects;
    newCheck.id = 'Cancel_date' + intSelects;   

    newTD.appendChild(newCheck);
   
    newCheck.checked = true;
   
    // ************** 1. CELLE AFSLUTNING ***********************
    newTR.appendChild(newTD); 

    // ************** 2. CELLE Start ****************************   
    newTD = document.createElement("TD");

    newDiv = document.createElement("div");
    newDiv.id = 'day_name' + intSelects;
    newTD.appendChild(newDiv); 
     
    var divTxt = document.createTextNode(thisDayName);
    newDiv.appendChild(divTxt);
 
    // ************** 2. CELLE AFSLUTNING ***********************
    newTR.appendChild(newTD);

    // ************** 3. CELLE Start ****************************   
    newTD = document.createElement("TD");

    var newSel = document.createElement("SELECT"); 
    newSel.size = '1';
    newSel.className = 'inputbox';
    newSel.name = 'Date_Day' + intSelects;
    newSel.id = 'Date_Day' + intSelects;
    newTD.appendChild(newSel);

    for(i=1;32>i;i++){
        newSel.options[newSel.length] = new Option(i, i);
    }
 
    newSel.selectedIndex = thisDay - 1;

    newTD.appendChild(dash);

    newSel = document.createElement("SELECT");
    newSel.size = '1';
    newSel.className = 'inputbox';
    newSel.name = 'Date_Month' + intSelects;
    newSel.id = 'Date_Month' + intSelects;
    newTD.appendChild(newSel);
       
    var mName = ['','januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december'];
    for(i=1;13>i;i++){
        newSel.options[newSel.length] = new Option(mName[i],i);
    }
 
    newSel.selectedIndex = thisMonth;

    dash = dash.cloneNode(true);
    newTD.appendChild(dash);

    newSel = document.createElement("SELECT");
    newSel.size = '1';
    newSel.className = 'inputbox';
    newSel.name = 'Date_Year' + intSelects;
    newSel.id = 'Date_Year' + intSelects;
    newTD.appendChild(newSel);

    //3 år frem i tiden
    for(i=0;3>i;i++){
        newSel.options[newSel.length] = new Option(thisYear + i, thisYear + i);
    }
 
    newSel.selectedIndex = 0;
   
    // ************** 3. CELLE AFSLUTNING ***********************
    newTR.appendChild(newTD);
}

function getDayName(dato) {
    strDays = new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
    return strDays[dato.getDay()];
}

</script>
<title>Se forskellen i IE css-fortolkning</title>
</head>
<body>
<form>
Opdater med:<br>
Uge: <input name="isMonth" type="radio" checked><br>
Måned: <input name="isMonth" type="radio"><br>
<div id="motherDiv"></div>
<button onclick="appendSelect(this.form);">Indsæt tabel</button><br>
<button onclick="alert(document.body.innerHTML)">Vis indhold</button>
</form>
</body>
</html>
Avatar billede roenving Novice
19. juli 2005 - 20:54 #33
*lol*

-- det skulle selvfølgelig have været i det andet spørgsmål !-)

Indsætter det lige til de 7 dage !o]
Avatar billede axkris Nybegynder
28. juli 2005 - 12:02 #34
Blot til orientering gav det ingen serverside-problemer hverken i IE eller Firefox, fordi jeg anvendte både id og name ved de elementer, som skulle submittes.

Løsningen er nu tæt på færdig og alt kører :-D

Takker for jeres hjælp :-D
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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