Array und Date Problem

jc-freak

Mitglied
Ich versuchte ein Array für jeden ersten Freitag in jedem Monat zu machen (siehe code oben).

Ich möchte auch das überprüft wird welche Monat grade ist. Kriege es irgendwie nicht hin. Und dementsprechen soll dann das Array Feld (0 - 11, 0 für Januar usw.) augewählt werden.

Code:
// Januar=0 Jahr,Monat,Tag,Stunde
dates = new Array("2005,6,1,19", "2005,7,5,19", "2005,8,2,19", "2005,9,7,19", "2005,10,4,19", "2005,11,2,19");

newDate = new Date(dates[1]);

actDate = new Date();
diffDate = (newDate-actDate) / 1000;

days = int(diffDate / 24 / 60 / 60 );
diffDate = diffDate - (days*24*60*60);
// Stundenanteil berechnen
hours = int(diffDate / 60 / 60);
diffDate = (diffDate - (hours*60*60));

minutes = int(diffDate/60);
diffDate = diffDate - (minutes*60);

seconds = int(diffDate);
 
Äh.

was willst Du nun genau ausgeben - die Differenz zwischen zwei Daten in Monaten, Tagen, Stunden und Sekunden?

Gruß
.
 
achso ich dachte man siehts im code. und zwar ist das ganz für einen counter der immer zum ersten freitag im monat runterzählt.

zum beispiel: 01.07.2005 19 Uhr (2005,6,1,19)


es soll halt alles automatisch ablaufen so das ich nur zu Beginn jeden Jahres einmal die ersten Freitage eingeben muss.
 
Hi,

zunächst kannst Du aus einem String wie "2005,6,1,5" kein gültiges Datum mit Date() erzeugen. Der Konstruktor erwartet entweder den Zeitwert oder sämtliche Werte einzeln. Du musst den String also mit split teilen und den Monat um 1 veringern:
PHP:
var t = dates[1].split(",");
var d = new Date(t[0], parseInt(t[1], 10) - 1, t[2], t[3]);

trace(d);
Nun kannst Du die Differenz zwischen jetzt und d berechnen.

Gruß
.
 
ah fein das hat mir schon weitergeholfen.

so sieht das ganze nun bei mir aus und es funktioniert :D

ich bekomm aber immer noch nicht hin den aktuellen Monat abzufragen sprich (Januar bis Dezember (0-11)) und diesen dann an var "i" zu übergeben.

PHP:
var dates = new Array("2005,7,1,19", "2005,8,5,19", "2005,9,2,19", "2005,10,7,19", "2005,11,4,19", "2005,12,2,19");

var aArray = actDate(n);
var i = parseInt(aArray, 10);

var t = dates[i].split(",");
var newDate = new Date(t[0], parseInt(t[1], 10) - 1, t[2], t[3]);
trace(newDate);

var actDate = new Date();
var diffDate = (newDate-actDate) / 1000;

var days = int(diffDate / 24 / 60 / 60 );
var diffDate = diffDate - (days*24*60*60);
// Stundenanteil berechnen
var hours = int(diffDate / 60 / 60);
var diffDate = (diffDate - (hours*60*60));

var minutes = int(diffDate/60);
var diffDate = diffDate - (minutes*60);

var seconds = int(diffDate);
 
Hi,

was soll denn in
PHP:
var aArray = actDate(n);
var i = parseInt(aArray, 10);
stehen, wenn acDate noch gar nicht definiert ist (zumal acDate keine Funktion ist)?

Mach es so:
PHP:
var eintrag = 0;
var monat = new Date().getMonth() + 1;
for (var i=0; i<dates.length; i++) {
    if (dates[i].split(",")[1] == monat.toString()) {
        eintrag = i;
        break;
    }
}
in Eintrag hast Du dann den Index des Arrays "dates" stehen, dessen Monat dem aktuellen Monat entspricht.

Gruß
.
 
ok vielen Dank

hier das endresultat:

PHP:
var dates = new Array("2005,1,7,19", "2005,2,4,19", "2005,3,4,19", "2005,4,1,19", "2005,5,6,19", "2005,6,3,19", "2005,7,1,19", "2005,8,5,19", "2005,9,2,19", "2005,10,7,19", "2005,11,4,19", "2005,12,2,19");

var eintrag = 0;
var monat = new Date().getMonth() + 2;
for (var i=0; i<dates.length; i++) {
    if (dates[i].split(",")[1] == monat.toString()) {
        eintrag = i;
        break;
    }
} 

var t = dates[eintrag].split(",");
var newDate = new Date(t[0], parseInt(t[1], 10) - 1, t[2], t[3]);
trace(newDate);

var actDate = new Date();
var diffDate = (newDate-actDate) / 1000;

var days = int(diffDate / 24 / 60 / 60 );
var diffDate = diffDate - (days*24*60*60);
// Stundenanteil berechnen
var hours = int(diffDate / 60 / 60);
var diffDate = (diffDate - (hours*60*60));

var minutes = int(diffDate/60);
var diffDate = diffDate - (minutes*60);

var seconds = int(diffDate);

+2 da es sonst nicht geklappt hat bei var month


vielen dank :D
 
Zurück