Avatar billede codebase Praktikant
02. februar 2001 - 13:13 Der er 7 kommentarer og
1 løsning

Uge algoritme !!

Hvorfor er det lige at der er 53 ugere en gang i mellem ???

Jeg skal bruge algoritmen, da jeg arbejder på et kalender projekt!!!


-codebase
Avatar billede wismann Nybegynder
02. februar 2001 - 13:16 #1
hvorfor er der skud år en gang imellem der er fordi, at et år ikke er et år, men et år og nogen timer og derfor er der nogen gange 53 uger på et år og skud år hver 4. år

/vh
Wismann
Avatar billede codebase Praktikant
02. februar 2001 - 13:42 #2
år 2000 var skudår, og indeholdte 52 uger!!
år 1998 var ikke skudår og indeholdte 53 uger!

Så det er ikke helt rigtigt!!


Jeg skal bruge algoritmen, og ikke de halve svar!

-codebase
Avatar billede wismann Nybegynder
02. februar 2001 - 14:11 #3
okay men der er rigtig, det med 1 år og nogen timer.
håber du kunne bruge det.

/vh
Wismann
Avatar billede Thomas Nybegynder
02. februar 2001 - 14:30 #4
Uge 1 er den uge hvor årets første torsdag forekommer.
Alle år har plads til 52 uger, og nogle år har 53 uger. Hvis året begynder med en torsdag, eller hvis et skudår begynder med onsdag eller torsdag, er der plads til 53 uger.

Beregning 2 finder ud af om en evt. uge før uge 1 skal hedde uge 52 eller 53, og om en evt. uge efter uge 52 skal hedde uge 53 eller uge 1.

Beregning 1 er meget simplere og tager ikke hensyn til dette. I beregning 1 kommer enhver uge før uge 1 i samme år til at hedde uge 0, og enhver uge efter uge 52 i samme år bliver uge 53, og det er fejlen ved beregning 1.

Beregning 2 er således den rigtige, men til gengæld svær at sortere efter.

Jeg fandt lidt om det på http://www.pein.dk/java/weeknumber.htm - håber du kan bruge det!
Avatar billede codebase Praktikant
02. februar 2001 - 19:57 #5
dvs.
function beregn2() {                      // Finder det rigtige ugenummer og vedhæfter måned og år.
IndAar=document.form1.aar.value;
IndMdr=document.form1.mdr.value-1;
IndDag=document.form1.dag.value;
var Dato=new Date(IndAar,IndMdr,IndDag);  // Dato indtastet i form1.

var y2kDato=(Dato.getYear()<100)?1900:0;  // Årstal skal være Y2K sikret, for at kunne finde sidste år og næste år.
DatoAar=Dato.getYear()+y2kDato;

d1Jan= new Date(DatoAar,0,1);                              // Den 1. januar samme år.
Ugedag1Jan=d1Jan.getDay();                                  // ugedag (søn=0 - lør=6) for den 1. januar.
Nuldage = (Ugedag1Jan<5) ? 1-Ugedag1Jan : 8-Ugedag1Jan ;    // Antal dage før uge 1, evt. negativt tal.
Dagnummer=Math.round((Dato.getTime()-d1Jan.getTime())/1000/60/60/24)+1;
Ugenummer=Math.floor((Dagnummer-Nuldage-1)/7+1);            // Dette ugenummer er som regel det rigtige.

d1JanNaeste=new Date(DatoAar+1,0,1);
d1JanSidst= new Date(DatoAar-1,0,1);
DageIAar=Math.round((d1JanNaeste.getTime()-d1Jan.getTime())/1000/60/60/24);
DageSidsteAar=Math.round((d1Jan.getTime()-d1JanSidst.getTime())/1000/60/60/24);

if (Ugenummer==53) {                      // Den sidste uge i december hedder ofte uge 1.
Ugenummer=1;
if (Ugedag1Jan==4 || (Ugedag1Jan==3 && DageIAar==366)) Ugenummer=53;
}
if (Ugenummer==0) {                        // Den første uge i januar hedder ofte uge 52 eller 53.
Ugenummer=52;
if (Ugedag1Jan==5 || (Ugedag1Jan==6 && DageSidsteAar==366)) Ugenummer=53;
}

skulle være rigtigt ?

Så skal jeg bare lave det om til php jakk.... :)

-codebase
Avatar billede wismann Nybegynder
07. februar 2001 - 09:34 #6
Lige lidt til din viden så er en dag kun 23.57,???? timer lang.

/vh
Wismann
Avatar billede codebase Praktikant
12. februar 2001 - 21:46 #7
når jeg har fået svar på dette spg.:
http://www.eksperten.dk/spm/49579

kan jeg give points !!!!

_codeb@se.
Avatar billede a_lange Nybegynder
06. november 2015 - 03:31 #8
Der findes mange rigtige svar til dit spørgsmål.

Dit spørgsmål er hvorfor er der en gang imellem.

Et år er der 52 uger, + 1 dag, da 365 dage går ikke op i 7, som der dage i en uge, men går op i 364, som er 52.

Så hver år skubber vi en enkelt dag, og spare op til en uge ekstra, og hvert 4. har vi skudår, pga. at det tager nøjagtig, 365,2575, dage i et år, derfor, har vi 4. år skudår, - hver 100 år undtagen, hver 400 år, som der også er skud år, det vil sige der er ikke skud år 2100, 2200, og 2300, men 2400, er der igen skud år. Når der er skud er der 366 dage i et år, det vil sige at der er faktisk 52 + 2 dage, som spare yderlige op til en ekstra uge.

Hvornår er der så 53 uge i et år!

Jeg har en meget nem huske regel, hvilken dag er den 4. januar, hvis det er i søndag er der 53 uger

Hvis det er skudår, så skal 4. januar, være en lørdag eller søndag, så er der 53 uger i et år

Hvorfor skal vi se på den 4. januar, det er den simple grund, at den 4. januar, er altid uge 1, med ingen undtagelser.

Det svinger fra 5. til 6. år

Vores kalender, køre i en cirkel på 400 år, som vi har det nu, så om 400, i samme dato er den samme ugedag, og derfor kan man også helt nøjagtig, finde ud hvor ofte der er, 53 uger. da på 400 er der 71 år, som har 53 uger, det vil sige helt nøjagtig er der 5,63380281690141 mellem der er 53 uger, så derfor svinger det mellem 5 år og 6 år før der igen er 53 uger, i år 2015 er der 53 uger, og næste gang er det 2020, derefter der 53 uge i år 2026, osv.
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

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