19. februar 2004 - 12:34
Der er
16 kommentarer og 1 løsning
Problem med uge-funktion
Hej, Barklund har hjulpet mig med denne funktion: Date.prototype.getWeek = function() { var d = this.getDayOfYear()-this.getDay(); return Math.round(d/7)+1; }; Date.prototype.getDayOfYear = function() { var m = this.getMonth(); var d = this.getDate(); if (this.isLeapYear && this.month>2) { d++; } var i = m; while (i--) { d += this.$_months[i]; } return d; }; Date.prototype.isLeapYear = function() { var y = this.getYear(); return (y%4 == 0 && y%100 != 0) || y%400 == 0; }; Date.prototype.getDayDiff = function(other_date) { return Math.ceil(((this.getTime()-other_date.getTime())/(24*60*60*1000)*-1)+1); }; Date.prototype.$_months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; month_shortNames = ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]; week_shortNames = ["s", "m", "t", "o", "t", "f", "l"]; ASSetPropFlags(Date.prototype, null, 1, 0); currentDate = new Date(); for (i=1; i<=10; i++) { next_date = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+i-1); trace(next_date+ " - uge: "+next_date.getWeek()) } Men ovenstående kode returnerer dette: Thu Feb 19 00:00:00 GMT+0100 2004 - uge: 8 Fri Feb 20 00:00:00 GMT+0100 2004 - uge: 8 Sat Feb 21 00:00:00 GMT+0100 2004 - uge: 8 Sun Feb 22 00:00:00 GMT+0100 2004 - uge: 9 Mon Feb 23 00:00:00 GMT+0100 2004 - uge: 9 Tue Feb 24 00:00:00 GMT+0100 2004 - uge: 9 Wed Feb 25 00:00:00 GMT+0100 2004 - uge: 9 Thu Feb 26 00:00:00 GMT+0100 2004 - uge: 9 Fri Feb 27 00:00:00 GMT+0100 2004 - uge: 9 Sat Feb 28 00:00:00 GMT+0100 2004 - uge: 9 Som det kan ses er der en fejl... Sun Feb 22 er f.eks. ikke uge 9, men uge 8. Er der nogen, der kan hjælpe med at rette den til ?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
19. februar 2004 - 13:02
#1
Her: var d = this.getDayOfYear()-this.getDay(); Skal du enten sige -1 eller +1 til sidst - det kan jeg ikke lige overskue ;)
19. februar 2004 - 13:08
#2
Hej igen, Den ligger jo oppe i: Date.prototype.getWeek = function() { var d = this.getDayOfYear()-this.getDay(); return Math.round(d/7)+1; }; Jeg har prøvet med: Date.prototype.getWeek = function() { var d = this.getDayOfYear()-this.getDay()+1; return Math.round(d/7)+1; }; og Date.prototype.getWeek = function() { var d = this.getDayOfYear()-this.getDay()-1; return Math.round(d/7)+1; }; Men uden held...
19. februar 2004 - 14:27
#3
Sikker? giver det ingen ændring?
19. februar 2004 - 14:29
#4
Vil du se et grimt hack? var t, d = this.getDayOfYear()-((t=this.getDay()) == 0 ? 7 : t);
19. februar 2004 - 14:29
#5
Tihi :)
19. februar 2004 - 14:36
#6
Og den virker ikke helt over årsskifter... første torsdag hvet år ligger ALTID i uge 1... det tager den ikke højde for...
19. februar 2004 - 15:30
#7
Ja, jeg er sikker :-) Disse 2 skiller stadig ugen forkert. Date.prototype.getWeek = function() { var d = this.getDayOfYear()-this.getDay()+1; return Math.round(d/7)+1; }; Thu Feb 19 00:00:00 GMT+0100 2004 - uge: 7 Fri Feb 20 00:00:00 GMT+0100 2004 - uge: 7 Sat Feb 21 00:00:00 GMT+0100 2004 - uge: 7 Sun Feb 22 00:00:00 GMT+0100 2004 - uge: 8 Mon Feb 23 00:00:00 GMT+0100 2004 - uge: 8 Tue Feb 24 00:00:00 GMT+0100 2004 - uge: 8 Wed Feb 25 00:00:00 GMT+0100 2004 - uge: 8 Thu Feb 26 00:00:00 GMT+0100 2004 - uge: 8 Fri Feb 27 00:00:00 GMT+0100 2004 - uge: 8 Sat Feb 28 00:00:00 GMT+0100 2004 - uge: 8 og Date.prototype.getWeek = function() { var d = this.getDayOfYear()-this.getDay()-1; return Math.round(d/7)+1; }; Thu Feb 19 00:00:00 GMT+0100 2004 - uge: 6 Fri Feb 20 00:00:00 GMT+0100 2004 - uge: 6 Sat Feb 21 00:00:00 GMT+0100 2004 - uge: 6 Sun Feb 22 00:00:00 GMT+0100 2004 - uge: 7 Mon Feb 23 00:00:00 GMT+0100 2004 - uge: 7 Tue Feb 24 00:00:00 GMT+0100 2004 - uge: 7 Wed Feb 25 00:00:00 GMT+0100 2004 - uge: 7 Thu Feb 26 00:00:00 GMT+0100 2004 - uge: 7 Fri Feb 27 00:00:00 GMT+0100 2004 - uge: 7 Sat Feb 28 00:00:00 GMT+0100 2004 - uge: 7 Den sætter søndag til altid at være i næste uge. Jeg vil gerne have søndagen i samme uge.
19. februar 2004 - 16:14
#8
Men blev det ikke løst med ovenstående andet hack?
19. februar 2004 - 16:21
#9
Nej, ikke helt: Date.prototype.getWeek = function() { var t, d = this.getDayOfYear()-((t=this.getDay()) == 0 ? 7 : t); return Math.round(d/7)+1; }; Date.prototype.getDayOfYear = function() { var m = this.getMonth(); var d = this.getDate(); if (this.isLeapYear && this.month>2) { d++; } var i = m; while (i--) { d += this.$_months[i]; } return d; }; Date.prototype.isLeapYear = function() { var y = this.getYear(); return (y%4 == 0 && y%100 != 0) || y%400 == 0; }; Date.prototype.getDayDiff = function(other_date) { return Math.ceil(((this.getTime()-other_date.getTime())/(24*60*60*1000)*-1)+1); }; Date.prototype.$_months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; month_shortNames = ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"]; week_shortNames = ["s", "m", "t", "o", "t", "f", "l"]; ASSetPropFlags(Date.prototype, null, 1, 0); currentDate = new Date(); for (i=1; i<=30; i++) { next_date = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()+i-1); trace(next_date+ " - uge: "+next_date.getWeek()) } Thu Feb 19 00:00:00 GMT+0100 2004 - uge: 8 Fri Feb 20 00:00:00 GMT+0100 2004 - uge: 8 Sat Feb 21 00:00:00 GMT+0100 2004 - uge: 8 Sun Feb 22 00:00:00 GMT+0100 2004 - uge: 8 Mon Feb 23 00:00:00 GMT+0100 2004 - uge: 9 Tue Feb 24 00:00:00 GMT+0100 2004 - uge: 9 Wed Feb 25 00:00:00 GMT+0100 2004 - uge: 9 Thu Feb 26 00:00:00 GMT+0100 2004 - uge: 9 Fri Feb 27 00:00:00 GMT+0100 2004 - uge: 9 Sat Feb 28 00:00:00 GMT+0100 2004 - uge: 9 Sun Feb 29 00:00:00 GMT+0100 2004 - uge: 9 Mon Mar 1 00:00:00 GMT+0100 2004 - uge: 9 Tue Mar 2 00:00:00 GMT+0100 2004 - uge: 9 Wed Mar 3 00:00:00 GMT+0100 2004 - uge: 9 Thu Mar 4 00:00:00 GMT+0100 2004 - uge: 9 Fri Mar 5 00:00:00 GMT+0100 2004 - uge: 9 Sat Mar 6 00:00:00 GMT+0100 2004 - uge: 9 Sun Mar 7 00:00:00 GMT+0100 2004 - uge: 9 Mon Mar 8 00:00:00 GMT+0100 2004 - uge: 10 Tue Mar 9 00:00:00 GMT+0100 2004 - uge: 10 Wed Mar 10 00:00:00 GMT+0100 2004 - uge: 10 Thu Mar 11 00:00:00 GMT+0100 2004 - uge: 10 Fri Mar 12 00:00:00 GMT+0100 2004 - uge: 10 Sat Mar 13 00:00:00 GMT+0100 2004 - uge: 10 Sun Mar 14 00:00:00 GMT+0100 2004 - uge: 10 Mon Mar 15 00:00:00 GMT+0100 2004 - uge: 11 Tue Mar 16 00:00:00 GMT+0100 2004 - uge: 11 Wed Mar 17 00:00:00 GMT+0100 2004 - uge: 11 Thu Mar 18 00:00:00 GMT+0100 2004 - uge: 11 Fri Mar 19 00:00:00 GMT+0100 2004 - uge: 11
19. februar 2004 - 16:21
#10
Lidt for mange uge 9 :-)
19. februar 2004 - 23:15
#11
Kan du se problemet ?
22. februar 2004 - 16:52
#12
Fejl i getDayOfYear: Date.prototype.getDayOfYear = function() { var m = this.getMonth(); var d = this.getDate(); if (this.isLeapYear() && m>2) { d++; } while (m--) { d += this.$_months[m]; } return d; };
22. februar 2004 - 21:33
#13
Hej igen, Den fåkker stadigvæk op :-(
23. februar 2004 - 14:59
#14
if (this.isLeapYear() && m>1) {
23. februar 2004 - 15:02
#15
smukt!
23. februar 2004 - 15:37
#16
Ja, marts er jo uge 2 i actionscript - derfor >1 og ikke >2... :)
23. februar 2004 - 15:38
#17
Tark for points ;)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.