new Date(); Tage hoch und runter zählen...

Crav3X

Erfahrenes Mitglied
Hallo,

ich versuche mich schon eine ganze weile an JavaScript und benötige eine Funktion die mir ein beliebiges Datum um 7 Tage erhöht und dies umgekehrt.

Code:
function datumaendern(date, method)
{
var date = date;
var Split = date.split(".");
			
var formdate = (Split[2]+'/'+Split[1]+'/'+Split[0]);
			
			
var method = method;
			
	if(method == +7)
		{
				
		methd = 7;
		isday = parseInt(Split[0]);		
		Day = isday + methd;
		
		
		var mayo = new Date(Split[2],Split[1],Split[0] +7,0,0,0);
	alert(mayo)
		 
		var day = mayo.getDate();
		var month = mayo.getMonth();
		var year = mayo.getFullYear(); 
		
		var date = (day+'.'+month+'.'+year);	
	alert (date);	
				
				
				
		var formdate = (Day+'.'+Split[1]+'.'+Split[2]);
		
				
	document.location.href = 'index.php?datum=' + date;

.....
....
...
..
.
Code:
var mayo = new Date(Split[2],Split[1],Split[0] +7,0,0,0);
Funktioniert nicht da es mir irgendwas mit 27.9.2008 zurück gibt...

Code:
var mayo = new Date(Split[2],Split[1],++Split[0],0,0,0);
...hingegen liefert mir ein richtiges Datum welches um 1 Tag erhöht wurde... jedoch benötige ich dies um 7 Tage... also Jeweils die nächste woche...

Hat jemand eine Idee wie ich an mein Ziel gelange!?


Vielen dank für die Zeit!
Crav
 
Hi,

vielleicht ist es einfacher, über die Millisekunden zu rechnen, die getTime liefert.

Beispiel:
Code:
<script type="text/javascript">
  <!--
function datumaendern(date, method){
  var arrSplit = date.split(".");
  var objDate = new Date(arrSplit[2], arrSplit[1]-1, arrSplit[0]);
  if(method == "+7"){
    var lngNewTS = objDate.getTime() + 7*24*3600*1000; // 7 Tage addieren
    alert(new Date(lngNewTS));
  }
}

datumaendern("05.08.2008", "+7");
 //-->
</script>
Ciao
Quaese
 
Wunderbar,
die lösung funktioniert wunderbar.

Hätte ich auch selbst drauf kommen müssen^^

Vielen Dank!
 
Gib aus lauter Spaß mal ein Datum zwischen den 20.10.2008 und 26.10.2008 ein und Du wirst feststellen das nun immer 1 Tag fehlt. 7 Tage auf den 20.10 gerechnet wäre der 27.10 aber ausgeben wird er Dir den 26.10. Ab den 27.10 wird alles funktionieren wieder wie gehabt.

Das liegt an der Umstellung von der Sommerzeit zur Winterzeit am 26.10.2008 nun wo die Uhren eine Stunde zurück gestellt werden und der Tag dann somit 25 statt wie gewöhnlich 24 Stunden hat.

Wobei PHP da noch nen bissel genauer ist , das erhöt den Tag dann gleich gar nicht mehr und würde einfach auf den Tag stehen bleiben.

In solchen Fällen ist es immer besser gleich um ganze Tage hochzuzählen.

Eine konkrete Lösung kommt später aber ich muss dann auch ersmtal zur Arbeit aber eventuell hat ja wer anderes ein Beispiel ;).
 
oh... hmm...

in meinem Programm gibt er das richtige Datum aus...

07.10.2008
14.10.2008
21.10.2008
28.10.2008

das waren die schritte die ich in meinem Programm momentan gehe...
 
Hi,

für einen derartigen Fall sollte es ausreichen, ein Datumsobjekt grösser als 0 Uhr zu erstellen und die Stundenanzahl des Zieldatums zu vergleichen und entsprechend zu modifizieren.
Code:
function datumaendern(date, method){
  var arrSplit = date.split(".");
  var objDate = new Date(arrSplit[2], arrSplit[1]-1, arrSplit[0], 5, 0, 0);
  if(method == "+7"){
    var lngNewTS = objDate.getTime() + 7*24*3600*1000; // 7 Tage addieren
    if(objDate.getHours() != new Date(lngNewTS).getHours()){
      lngNewTS += (objDate.getHours() > new Date(lngNewTS).getHours())? 3600000 : -3600000
    }
    alert(new Date(lngNewTS));
  }
}

datumaendern("25.3.2008", "+7");   // Sommer- -> Winterzeit
datumaendern("21.10.2008", "+7");  // Winter- -> Sommerzeit
Ciao
Quaese
 
Mhm ich habe es im FF 3.0 (oder 2.0 bin mir da nicht so sicher welchen der beiden ich eben am laufen hatte ) getestet kann sein das der da auch wieder anders reagiert , bei mir kam beim 20.10 der 26.10 raus und wenn ich den 26.10 eingegeben habe der 1.11. was wenn ich mich nicht irre hier aber dann der 2.11 sein sollte.

getestet mit FF und Windows XP

Kann auch sein das ich da nun falsch liege aber dieses Problem kenn ich noch von PHP wo ich mich dann gewundert habe das er immer an einen gewissen Datum im Oktober (immer am Ende des Monats) stehen geblieben ist.

Ich sags immer wieder die ganzen Browserunterschiede kotzen einen so langsam an.
 
Hmm...
auch mit Firefox 3 läuft es bei mir,... kann ich bisher nicht nachvollziehn... aber meld mich sobald irgendwas da nicht passt...
 
Guten Tag liebe Gemeinde...

ich habe nun ein ziemlich *bescheidenes* Problem...

durch die Lösung von Quaese die wirklich super is... vielen dank Dafür ;)
(!)Aber....

wir nehmen an heute ist der 25.8.2008...
Nun Rechnet die Funktion 7 Tage drauf...

+1 = 26
+2 = 27
+3 = 28
+4 = 29
+5 = 30
+6 = 31
+7 = 01 des nächsten Monats September...

Bei mir zeigt er aber nun den 02.09.2008 an...

:( Das nich gut... Wie könnte ich die funktion anpassen das es richtig funktioniert!?
Es ist bei jedem Monats wechsel so....

:confused:
Gibt es da ein Problem mit dem Monat!?
Der Monat fängt bei (date) ja mit 0 an oder!?

Ich blick echt nicht mehr durch... :(

Vielen dank... hoffe auf schnelle Hilfe,...
 
Zuletzt bearbeitet:
Hi,

ich kann von dir beschriebene Problem hier nicht nachvollziehen. Wenn ich den 25.08.2008 an die Funktion aus meinem letzten Beitrag übergebe, wird der 1. September 2008 zurückgegeben. Ebenso wird bei anderen Monatswechseln das neue Datum korrekt berechnet.

Ciao
Quaese
 

Neue Beiträge

Zurück