Avatar billede compac Seniormester
10. november 2004 - 16:29 Der er 15 kommentarer og
1 løsning

Påske - pinse

Jeg har igen spørgsmål om påsken. Ved afkrydsning af  en checkbox skal 1.påskedag fremkomme i et inputfelt. Såfremt transaktionen ligger FØR påsken skal det være 1.påskedag i år  -ellers 1.påskedag næste år.
Jeg skal bruge en beregning af 1.pinsedag efter de samme kriterierier.
Jeg har foreløbig følgende kode:

<html>
<head>
<script language="JavaScript" src="roenvingDate.js"></script>
<script type="text/Javascript">
var paschal = ["A14","A3","M23","A11","M31","A18","A8","M28","A16","A5","M25","A13","A2","M22","A10","M30","A17","A7","M27"];

function funk(n) {

  var d = new Date(),txt = "",aar = d.getFullYear(); pinse = "";
 
  switch(n){

<!-- paaskedag -->
    case(1):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d.setDate(d.getDate()+7-dag);    //1. påskedag
      break;
<!-- pinsedag -->
    case(2):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      d = d.dateDiff('set',0,0,56-d.getDay());//1.pinsedag
      break;
  }
  document.form1.resultat.value = d.format('dd-mm-yyyy');
}
</script>
</head>
<form name="form1">
<br><input type="checkbox" name="box1" value="v1" onclick="funk(this);">Påskedag

      <br><input type="checkbox" name="box1" value="v2" onclick="funk(this);">Pinsedag
</form>
</html>
Avatar billede roenving Novice
10. november 2004 - 16:37 #1
Forventer du, at brugeren fortryder et valg ?-)

Ellers:

Sæt definitionen af d udenfor funktionen:

<script language="JavaScript" src="roenvingDate.js"></script>
<script type="text/Javascript">

var paschal = ["A14","A3","M23","A11","M31","A18","A8","M28","A16","A5","M25","A13","A2","M22","A10","M30","A17","A7","M27"];
var d = new Date();

function funk(n) {

  var txt = "",aar = d.getFullYear(); pinse = "";
 
  switch(n){

<!-- paaskedag -->
    case(1):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      dag = d.getDay();
      d.setDate(d.getDate()+7-dag);    //1. påskedag
      if(d.getTime()<new Date().getTime()){
        d.setFullYear(d.getFullYear()+1);
        funk(1);
        return;
      }
      break;
<!-- pinsedag -->
    case(2):
      rest = aar%19;
      p = paschal[rest];
      d.setMonth((p.indexOf("A") != -1) ? 3 : 2,parseInt(p.substring(1)));
      d = d.dateDiff('set',0,0,56-d.getDay());//1.pinsedag
      if(d.getTime()<new Date().getTime()){
        d.setFullYear(d.getFullYear()+1);
        funk(2);
        return;
      }
      break;
  }
  document.form1.resultat.value = d.format('dd-mm-yyyy');
}
</script>
Avatar billede olebole Juniormester
10. november 2004 - 16:45 #2
<ole>

... og en anden version:

<script type="text/JavaScript">
function paaskedag(year) {
    k = year / 100;
    p = (13 + 8 * k) / 25;
    q = k / 4;
    m = (15 - p + k - q) % 30;
    n = (4 + k - q) % 7;
    a = year % 19;
    b = year % 4;
    c = year % 7;
    d = (19 * a + m) % 30;
    e = (2 * b + 4 * c + 6 * d + n) % 7;
    f = parseInt(d + e);
   
    if (f <= 9) {
        day = 22 + f;
        month = 3;
    } else {
        if ((d == 29) && (e == 6)) {
            day = 19;
            month = 4;
        } else {
            if ((d == 28) && (e == 6) && (a > 10)) {
                day = 18;
                month = 4;
            } else {
                day = f - 9;
                month = 4;
            }
        }
    }
    return day+". "+month+" - "+year;
}

d.write( "Påskedag: " + paaskedag("2005") );
</script>

Pinsen falder så et fast antal dage efter Påske ... noget med pinto, penta, fem ... noget med 50 dage. Slå det evt. op på Google - eller check antal dage i en kalender  :)

/mvh
</bole>
Avatar billede olebole Juniormester
10. november 2004 - 16:51 #3
*host-host* jeg fik ikke lige læst spørgsmålet ordentligt  :)
Avatar billede compac Seniormester
10. november 2004 - 17:15 #4
Der kommer en fejlmedd: Stack owerflow at line 99
Meningen er at det er den kommende påske/pinsedato der skal vises.
Avatar billede roenving Novice
10. november 2004 - 17:18 #5
Er du sikker på at du har fjernet initialiseringen af d inde i funktionen ?-)

function funk(n) {

  var txt = "",aar = d.getFullYear(); pinse = "";

...
Avatar billede compac Seniormester
11. november 2004 - 16:30 #6
De hjalp.
Ikke fordi jeg ikke stoler på dig, men jeg kunne godt tænke mig at teste alle datoerne.
Jeg har prøvet at ændre new Date() værdien = idag: Thu Nov 11 16:17:33 UTC+0100 2004
til en tidligere dato. d = Wed Nov 10 16:17:33 UTC+0100 2004 - men det vil den ikke acceptere. Har du et forslag?
Avatar billede roenving Novice
11. november 2004 - 17:49 #7
Hvordan mener du at du vil teste ?-)

-- klart det nemmeste er at tage fat i computerens dato og ændre den (det er jo bare et par klik med musen !-)

-- men hvis du skal sætte en ny dato 'hårdt' skal du f.eks. bruge:

d = new Date('Wed Nov 10 16:17:33 UTC+0100 2004');

-- jeg har ikke selv sat den sådan, men det er een af mulighederne !-)
Avatar billede roenving Novice
11. november 2004 - 17:50 #8
-- forøvrigt bruger jeg selv konsekvent:

d = new Date(2004,10,10,16,17,33);//ny lokal tid: 10/11-2004 16:17:33
Avatar billede compac Seniormester
29. maj 2005 - 22:51 #9
Ø
Avatar billede olebole Juniormester
29. maj 2005 - 22:55 #10
Det er fint, vi får lukket alle dine gamle spørgsmål ... men jeg håber, du tænker lidt over, hvor megen unødig spildtid, de repræsenterer for de brugere, der involverede sig i dine problemer  :)
Avatar billede Chewie Novice
30. maj 2005 - 08:36 #11
Det er også en underlig dille der er kommet her på E! - det er som om det ikke er velset at smide et svar hvis man mener man har svaret og når så spg. skal lukkes skal personen side og tigge om et svar - sådan har det da ikke altid været
Avatar billede olebole Juniormester
30. maj 2005 - 18:38 #12
Det er da en pudsig udvikling, at folk er blevet så navlebeskuende og selvhøjttidelige, at de godt kan ulejlige andre mennesker med deres problemer - men føler det uovervindeligt at skulle nedværdige sig til at bede ('tigge', som du selv kalder det) om et svar, så man kan gengælde svarerens arbejdet med lidt points. End ikke et lillebitte 'tak' kan man efterhånden finde ud af at lægge, når man lukker et spørgsmål.

Ja, jeg giver dig helt ret. Det er en yderst uheldig og ubehagelig udvikling, vi er vidne til her på Eksperten ... sådan har det da ikke altid været
Avatar billede olebole Juniormester
30. maj 2005 - 18:40 #13
- bare det, at folk kan finde på at skrive sådan, siger en del om klientellet
Avatar billede Chewie Novice
30. maj 2005 - 22:34 #14
Ja du forstår da at lyse det fra den mest negative vinkel det skal der da ikke være nogen tvivl om - men det var nu ikke sådan ment

ganske rigtig at et tak skal man efterhånden kigge langt efter - tilgæld vrimler det med politimænd som har en klar mening om at alt ting skal køre efter deres hovede - med et forum med flere tusinde bruger er det nok lidt for optimiskisk.
Avatar billede olebole Juniormester
30. maj 2005 - 23:07 #15
Jeg formoder, din kommentar er et udslag af en fortrydelse af din tidligere kommentar (30/05-2005 08:36:48).

Jeg har været på Eksperten i så mange år og læst så mange indlæg, at din kommentar ikke formåede at irritere mig i væsentlig grad - selvom den vel var et meget godt eksempel på en kommentar fra en af de dér "politimænd som har en klar mening om at alt ting skal køre efter deres hovede"  ;o)

Forskellen er, at jeg blot efterlyser en anelse almindelig høflighed ... men også det er desværre nok for optimistisk  :)
Avatar billede Chewie Novice
31. maj 2005 - 16:49 #16
nææ det var det såment ikke og jeg tror du tager det jeg skriver at for personligt - hvorfor ved jeg ikke

min kommentar (30/05-2005 08:36:48) blev skrevet fordi jeg synes det er underligt som E! forandre sig.
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