Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-06-2004, 16:46   #1 (permalink)
Neuer User
 
Benutzerbild von greta_lee
 
Registriert seit: Nov 2003
Beiträge: 13
Smile Anzahl Tage pro Monat

Hello all!

Hat einer eine Idee, wie ich herausfinden kann, wieviel Tage ein bestimmter Monat hat?
Ich will eine Art Kalender-Anzeige bauen und dafür muß ich natürlich wissen, wieviele Tage ich jeweils zeichnen muß.


Ich würde mich sehr über einen Tip freuen!
greta_lee ist offline   Mit Zitat antworten
Alt 16-06-2004, 21:11   #2 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Hallo,
natürlich gibts auch einen Weg das ganze zu berechnen, aber seit Flash5 gibt es ja das date-Objekt, daß Dir praktisch diese Arbeit abnimmt, ein schneller Kalender für 2004 in flashMX:
PHP-Code:
datum=new Date(2004,0,1);
i=0;
while(
datum.getFullYear()<2005){
    var 
erster=new Date(datum.getFullYear(),datum.getMonth(),1);
    var 
xcalc=datum.getDay()*20+(datum.getMonth()%4)*150;
    var 
ycalc=Math.floor((datum.getDate()+erster.getDay()-1)/7)*15+Math.floor(datum.getMonth()/4)*110;
    
this.createTextField("t"+i,i+1,xcalc,ycalc,15,15);
    
this["t"+i].text=datum.getDate();
    
i++;
    
datum.setDate(datum.getDate()+1);

...das könnte man jetzt noch alles ausschmücken und beschriften, allerdings gibts das alles fertig bei www.flashstar.de zum runterladen.

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 18-06-2004, 10:12   #3 (permalink)
Neuer User
 
Benutzerbild von greta_lee
 
Registriert seit: Nov 2003
Beiträge: 13
Super Tip!

Vielen Dank, damit kann ich ja gleich losbauen
greta_lee ist offline   Mit Zitat antworten
Alt 18-06-2004, 11:07   #4 (permalink)
Neuer User
 
Benutzerbild von greta_lee
 
Registriert seit: Nov 2003
Beiträge: 13
Ich hab Deine Idee aufgegriffen und eine separate Funktion gebaut, um nur die Anzahl der Tage rauszukriegen.


Code:
function getDaysPerMonth(month, year):Number {
	date = new Date(year, month, 28);
	date.setDate(date.getDate()+1);
	if (date.getMonth()>month) {
		return 28;
	}
	date.setDate(date.getDate()+1);
	if (date.getMonth()>month) {
		return 29;
	}
	date.setDate(date.getDate()+1);
	if (date.getMonth()>month) {
		return 30;
	}
	date.setDate(date.getDate()+1);
	if (date.getMonth()>month) {
		return 31;
	}
}
Hoffentlich ist das nicht so ein Performance-Dieb.
greta_lee ist offline   Mit Zitat antworten
Alt 19-06-2004, 15:45   #5 (permalink)
!diot
 
Benutzerbild von Fuery3302
 
Registriert seit: Aug 2003
Ort: PunkRockCity-Linz
Beiträge: 95
hi greta_lee

hab grad dein skrip probiert. funzt aber iergendwie nicht.
habs jetzt mal selbst gebastelt. ich glaub das könnte stimmen probiers einfach mal.

Code:
function TageBerechnen(Jahr,Monat) {
	
	var datum = new Date (Jahr, Monat, 0)
	for(var i = 28; i < 32; i++) {
		
		if (datum.getDate() == 28) var Anzahl = 28;
		else if (datum.getDate() == 29) var Anzahl = 29;
		else if (datum.getDate() == 30) var Anzahl = 30;
		else if (datum.getDate() == 31) var Anzahl = 31;
	}
	return Anzahl;
}


trace (TageBerechnen(2003, 2)); // zB. Errechen Februar 2003
trace (TageBerechnen(2004, 2)); // zB. Errechen Februar 2004 (Schaltjahr)
__________________
Incubus rocks
Fuery3302 ist offline   Mit Zitat antworten
Alt 19-06-2004, 21:17   #6 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
nun ich weiss immer noch nicht wofür Ihr das braucht...wie gesagt, gerade beim Bauen von Kalendern nimmt Euch die Date-Funktion ja alles nötige ab, aber ich würde es dann so machen:
ActionScript:
  1. Date.prototype.checkFebruary=function(){
  2.     //alle 4 Jahre ein Schaltjahr
  3.     if(this.getFullYear()/4!=Math.round(this.getFullYear()/4))return 28;
  4.     //....ausser wenn ein volles Jahrundert beendet wird...
  5.     if(this.getFullYear()/100!=Math.round(this.getFullYear()/100))return 29;
  6.     //...aber doch wieder bei einem vollen Jahrtausend
  7.     if(this.getFullYear()/1000!=Math.round(this.getFullYear()/1000))return 28;
  8.     return 29;
  9. }
  10.                                       
  11. Date.prototype.daysOfMonth=function(){
  12.     var thirtyOneDays="0_2_4_6_7_9_11";
  13.     if (this.getMonth()==1) return this.checkFebruary();
  14.     if (thirtyOneDays.indexOf(this.getMonth())==-1)return 30;
  15.     return 31;                  
  16. }
  17. //testen
  18. //Anzahl der Tage pro Monat von 1896-2004
  19. monatsname=["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];
  20. test=new Date(2004,0,1);
  21.  
  22. for(i=1896;i<=2004;i++){
  23.     test.setFullYear(i);
  24.     trace("-----"+i+"-----")
  25.     for(j=0;j<12;j++){
  26.         test.setMonth(j);
  27.         trace(monatsname[test.getMonth()]+"= "+test.daysOfMonth()+" Tage");
  28.     }
  29. }

Gruß

Alois

Edit:
Zitat:
Zitat von Fuery3302
hi greta_lee

....trace (TageBerechnen(2003, 2)); // zB. Errechen Februar 2003
trace (TageBerechnen(2004, 2)); // zB. Errechen Februar 2004 (Schaltjahr)....
....da dürfte übrigens auch noch ein Denkfehler vorliegen...der Februar hat im Date-Objekt den Wert 1 (angefangen wird mit 0=Januar)
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (19-06-2004 um 21:33 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 20-06-2004, 20:23   #7 (permalink)
!diot
 
Benutzerbild von Fuery3302
 
Registriert seit: Aug 2003
Ort: PunkRockCity-Linz
Beiträge: 95
Lightbulb

ich hab das ganze jetzt nochmal überdacht und das ist rausgekommen.

Code:
function TageBerechnen(Jahr,Monat) {
	
	var datum = new Date (Jahr, Monat+1,0)

	return datum.getDate();
}

trace (TageBerechnen(2003, 1)); // zB. Errechen Februar 2003
trace (TageBerechnen(2004, 1)); // zB. Errechen Februar 2004 (Schaltjahr)

Ausgabe:

28
29
jetzt weis ich auch wo mein fehler lag. ich hab ja

Code:
var datum = new Date(Jahr, Monat, 0 );
gehabt. aber 0 liefert ja den letzten tag des vorherigen Monats.
z.B. 0. September 2004 = 31. August 2004

aso muss das dann so aussehn:

Code:
var datum = new Date(Jahr, Monat +1, 0)
__________________
Incubus rocks

Geändert von Fuery3302 (20-06-2004 um 20:26 Uhr)
Fuery3302 ist offline   Mit Zitat antworten
Alt 21-06-2004, 06:57   #8 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
jaaa fuery,
so isses natürlich noch besser...
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele