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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.