1Danke
ERLEDIGT
JA
JA
ANTWORTEN
12
12
ZUGRIFFE
401
401
EMPFEHLEN
-
Hallo,
ich ahbe auf einer Seite ein paar Datum-Berechnungen, die (wie ich durch Zuafall bemerkt habe) gar nicht richtig en).
Es soll 4 Berechnungen geben
1. letzten 2 Wochen
2. letzer Monat
3. letzten 3 Monate
4. letzten 6 Monate
Das Problem besteht darain, wenn Monats- oder Jahresgrenzen erreicht werden (aktuell bei monat6), werden die Werte negativ und somit unbrauchbar. Ich hatte schon angefangen, diese manuell zu korrigieren, was mich aber in Teufels Küche gebracht hat. Hat jemand eine Idee?
PHP-Code:function getDateTime(auswahl)
{
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var monat2 = currentTime.getMonth();
var day2 = currentTime.getDate()-28;
var monat3 = currentTime.getMonth()-2;
var monat6 = currentTime.getMonth()-5;
month=month+'';
day=day+'';
monat2=monat2+'';
day2=day2+'';
monat3=monat3+'';
monat6=monat6+'';
if (month.length==1) { month='0'+month; }
if (day.length==1) { day='0'+day; }
if (monat2.length==1) { monat2='0'+monat2; }
if (day2.length==1) { day2='0'+day2; }
if (monat3.length==1) { monat3='0'+monat3; }
if (monat6.length==1) { monat6='0'+monat6; }
if (auswahl == "2weeks")
{ alert(year + "-" + month + "-" + day2);
return (year + "-" + month + "-" + day2);
}
else if (auswahl == "lastmonth")
{
return (year + "-" + monat2 + "-" + day);
}
else if (auswahl == "last3month")
{
return (year + "-" + monat3 + "-" + day);
}
else if (auswahl == "last6month")
{
return (year + "-" + monat6 + "-" + day);
}
}
-
strtotime() nimmt dir diese Arbeit ab
PHP-Code:<?php
$date = time();
echo "1. letzten 2 Wochen: ".date("d.M.y", strtotime("-2 week", $date))."<br />";
echo "2. letzer Monat: ".date("M", strtotime("-1 month", $date))."<br />";
?>---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Super vielen dank. Hab nur gerade bemerkt, dass das ganze javascript ist. Gibts dazu analog etwas?
-
Ich schreib mal einen Mod an, damit dies zu Javascript verschoben wird.. hier bist du demnach falsch
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hi,
erstelle für die Berechnung neue Date-Objekte mit den neu berechneten Werten aus dem aktuellen Date-Objekt.
Code :1 2 3 4 5 6 7 8 9
var currentTime = new Date(); var month = (new Date(currentTime.getFullYear(), currentTime.getMonth() + 1, currentTime.getDate())).getMonth(); var day = currentTime.getDate(); var year = currentTime.getFullYear(); var monat2 = currentTime.getMonth(); var day2 = (new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDate()-28)).getDate(); var monat3 = (new Date(currentTime.getFullYear(), currentTime.getMonth()-2, currentTime.getDate())).getMonth(); var monat6 = (new Date(currentTime.getFullYear(), currentTime.getMonth()-5, currentTime.getDate())).getMonth();
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
Hi,
besten dank erst einmal für die Antwort. Bin nicht so der crack und hab es daher leider auch nicht hinbekommen. Gebe ich mir monat6 aus, kommt da 10 raus. Ist wohl der Monat. Da bei dieser Rechnung die Jahresgrenze überschriiten wird, muss vom jahr also 1 subtrahiert werden.Code :1
alert(monat6);
Verstehe die Lösung nicht so ganz. Oder kannst due es etwas ausführlich machen, für Doofe
thx
-
Hi,
die 10 steht für den November. JS beginnt bei der Monatsnummerierung bei 0 und geht somit bis zur 11 für Dezember.
Willst du die Jahreswechsel berücksichtigen, erstellst du Date-Objekte mit den erforderlichen Zeitänderungen - ausgehend vom aktuellen Datum. Die erhaltenen Objekte verwendest du nun zur Anzeige der Daten.
Beispiel:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
function getDateTime(auswahl){ var currentTime = new Date(); // Einen Monat weiter var month = new Date(currentTime.getFullYear(), currentTime.getMonth() + 1, currentTime.getDate()); // 28 Tage zurück var day2 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDate()-28); // Drei Monate zurück var monat3 = new Date(currentTime.getFullYear(), currentTime.getMonth()-3, currentTime.getDate()); // Sechs Monate zurück var monat6 = new Date(currentTime.getFullYear(), currentTime.getMonth()-6, currentTime.getDate()); if (auswahl == "2weeks"){ return (day2.getFullYear() + " - " + ((day2.getMonth()<10)?"0"+day2.getMonth():day2.getMonth()) + " - " + ((day2.getDate()<10)?"0"+day2.getDate():day2.getDate())); }else if (auswahl == "lastmonth"){ return (monat2.getFullYear() + " - " + ((monat2.getMonth()<10)?"0"+monat2.getMonth():monat2.getMonth()) + " - " + ((monat2.getDate()<10)?"0"+monat2.getDate():monat2.getDate())); }else if (auswahl == "last3month"){ return (monat3.getFullYear() + " - " + ((monat3.getMonth()<10)?"0"+monat3.getMonth():monat3.getMonth()) + " - " + ((monat3.getDate()<10)?"0"+monat3.getDate():monat3.getDate())); }else if (auswahl == "last6month"){ return (monat6.getFullYear() + " - " + ((monat6.getMonth()<10)?"0"+monat6.getMonth():monat6.getMonth()) + " - " + ((monat6.getDate()<10)?"0"+monat6.getDate():monat6.getDate())); } } alert(getDateTime("last6month"));
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
Hi,
ich habe bei den Monaten jetzt einen weniger subtrahiert, weil er immer einen Monat zu weit war. Ausserdem habe ich "var monat2" ergänzt.
Hoffe das passt so?!
Das mit letzte 2 Wochen klappt jedenfalls mit -28 bzw. auch mit -14 tage nicht.
Eine Idee?
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
function getDateTime(auswahl) { var currentTime = new Date(); // Einen Monat weiter var month = new Date(currentTime.getFullYear(), currentTime.getMonth() + 1, currentTime.getDate()); // 28 Tage zurück var day2 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDate()-28); var monat2 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDate()); // Drei Monate zurück var monat3 = new Date(currentTime.getFullYear(), currentTime.getMonth()-2, currentTime.getDate()); // Sechs Monate zurück var monat6 = new Date(currentTime.getFullYear(), currentTime.getMonth()-5, currentTime.getDate()); if (auswahl == "2weeks"){ alert((day2.getFullYear() + "-" + ((day2.getMonth()<10)?"0"+day2.getMonth():day2.getMonth()) + "-" + ((day2.getDate()<10)?"0"+day2.getDate():day2.getDate()))); }else if (auswahl == "lastmonth"){ alert(monat2.getFullYear() + "-" + ((monat2.getMonth()<10)?"0"+monat2.getMonth():monat2.getMonth()) + "-" + ((monat2.getDate()<10)?"0"+monat2.getDate():monat2.getDate())); }else if (auswahl == "last3month"){ alert(monat3.getFullYear() + "-" + ((monat3.getMonth()<10)?"0"+monat3.getMonth():monat3.getMonth()) + "-" + ((monat3.getDate()<10)?"0"+monat3.getDate():monat3.getDate())); }else if (auswahl == "last6month"){ alert(monat6.getFullYear() + "-" + ((monat6.getMonth()<10)?"0"+monat6.getMonth():monat6.getMonth()) + "-" + ((monat6.getDate()<10)?"0"+monat6.getDate():monat6.getDate())); }
-
Hi,
bei mir stimmen die Tagesberechnungen - sowohl für 14 als auch für 28 Tage.
Ebenso passen die Monatsberechnungen wie sie in meinem Beitrag stehen. Du hast gelesen, dass die Zählung der Monate bei 0 beginnt?
Wenn du mit monat2 den Zeitpunkt berechnen möchtest, der zwei Monate zurück liegt, solltest du 2 substrahieren.
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
Monat2 gab es in deinem Code nicht.
Bei mir passen die Monate nicht: immer einer zu wenig nach deinem Code.
Das mit der 28 versgehe ich auch nicht. Müsste da nicht 14 stehen: 2 wochen?
Da schmeisst er mir heute 2010-03-12 (mit -28)
Woran kanns liegen?
-
Hi,
wenn du ein Datum suchst, das 14 Tage in der Vergangenheit liegt, solltest du die 28 selbstverständlich gegen 14 austauschen. Soviel Eigeninitiative hatte ich vorausgesetzt.
Und ein letztes Mal: die Monatsnummerierung beginnt beim Date-Objekt bei 0.
D.h. 0=Januar, 1=Februar, ..., 11=Dezember. Diese Integerwerte liefert dir die Methode getMonth zurück und sie werden intern zur Datumsberechnung verwendet.
Mehr zum Date-Objekt findest du bei SelfHTML, auch speziell zu den Monaten und deren Darstellung.
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
-
habe natürlich auch 14 eingesetzt, was ja bereits viele posts vorher steht.
finde deine hilfe sehr nett und frage mich nur, wie dieser code bei dir richtige ergebnisse zaubert.
bei mir klappt es nur so:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
function getDateTime(auswahl) { var currentTime = new Date(); // Einen Monat weiter var month = new Date(currentTime.getFullYear(), currentTime.getMonth() + 0, currentTime.getDate()); // 28 Tage zurück var day2 = new Date(currentTime.getFullYear(), currentTime.getMonth() + 1, currentTime.getDate()-14); var monat2 = new Date(currentTime.getFullYear(), currentTime.getMonth()-0, currentTime.getDate()); // Drei Monate zurück var monat3 = new Date(currentTime.getFullYear(), currentTime.getMonth()-2, currentTime.getDate()); // Sechs Monate zurück var monat6 = new Date(currentTime.getFullYear(), currentTime.getMonth()-5, currentTime.getDate()); if (auswahl == "2weeks"){ alert((day2.getFullYear() + "-" + ((day2.getMonth()<10)?"0"+day2.getMonth():day2.getMonth()) + "-" + ((day2.getDate()<10)?"0"+day2.getDate():day2.getDate()))); return (day2.getFullYear() + "-" + ((day2.getMonth()<10)?"0"+day2.getMonth():day2.getMonth()) + "-" + ((day2.getDate()<10)?"0"+day2.getDate():day2.getDate())); }else if (auswahl == "lastmonth"){ alert(monat2.getFullYear() + "-" + ((monat2.getMonth()<10)?"0"+monat2.getMonth():monat2.getMonth()) + "-" + ((monat2.getDate()<10)?"0"+monat2.getDate():monat2.getDate())); return (monat2.getFullYear() + "-" + ((monat2.getMonth()<10)?"0"+monat2.getMonth():monat2.getMonth()) + "-" + ((monat2.getDate()<10)?"0"+monat2.getDate():monat2.getDate())); }else if (auswahl == "last3month"){ alert(monat3.getFullYear() + "-" + ((monat3.getMonth()<10)?"0"+monat3.getMonth():monat3.getMonth()) + "-" + ((monat3.getDate()<10)?"0"+monat3.getDate():monat3.getDate())); return (monat3.getFullYear() + "-" + ((monat3.getMonth()<10)?"0"+monat3.getMonth():monat3.getMonth()) + "-" + ((monat3.getDate()<10)?"0"+monat3.getDate():monat3.getDate())); }else if (auswahl == "last6month"){ alert(monat6.getFullYear() + "-" + ((monat6.getMonth()<10)?"0"+monat6.getMonth():monat6.getMonth()) + "-" + ((monat6.getDate()<10)?"0"+monat6.getDate():monat6.getDate())); return (monat6.getFullYear() + "-" + ((monat6.getMonth()<10)?"0"+monat6.getMonth():monat6.getMonth()) + "-" + ((monat6.getDate()<10)?"0"+monat6.getDate():monat6.getDate())); }
-
Hi,
reden wir von der Ausgabe oder von der Berechnung?
Die Berechnung wird so, wie ich sie dir gezeigt habe, richtig durchgeführt. Willst du, dass bei der Ausgabe z.B. für den Dezember die 12 statt der 11 steht, so musst du Eins bei der Ausgabe addieren.
Im folgenden Beispiel ist die Korrektur für 2weeks aufgezeigt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
function getDateTime(auswahl){ var currentTime = new Date(); // Einen Monat weiter var month = new Date(currentTime.getFullYear(), currentTime.getMonth() + 1, currentTime.getDate()); // 14 Tage zurück var day2 = new Date(currentTime.getFullYear(), currentTime.getMonth(), currentTime.getDate()-14); var monat2 = new Date(currentTime.getFullYear(), currentTime.getMonth()-1, currentTime.getDate()); // Drei Monate zurück var monat3 = new Date(currentTime.getFullYear(), currentTime.getMonth()-3, currentTime.getDate()); // Sechs Monate zurück var monat6 = new Date(currentTime.getFullYear(), currentTime.getMonth()-6, currentTime.getDate()); if (auswahl == "2weeks"){ alert((day2.getFullYear() + "-" + [B]((day2.getMonth()[COLOR="Red"]+1[/COLOR]<10)?"0"+(day2.getMonth()[COLOR="Red"]+1[/COLOR]):day2.getMonth()[COLOR="Red"]+1[/COLOR])[/B] + "-" + ((day2.getDate()<10)?"0"+day2.getDate():day2.getDate()))); return (day2.getFullYear() + "-" + ((day2.getMonth()+1<10)?"0"+(day2.getMonth()+1):day2.getMonth()+1) + "-" + ((day2.getDate()<10)?"0"+day2.getDate():day2.getDate())); }else if (auswahl == "lastmonth"){ alert(monat2.getFullYear() + "-" + ((monat2.getMonth()<10)?"0"+monat2.getMonth():monat2.getMonth()) + "-" + ((monat2.getDate()<10)?"0"+monat2.getDate():monat2.getDate())); return (monat2.getFullYear() + "-" + ((monat2.getMonth()<10)?"0"+monat2.getMonth():monat2.getMonth()) + "-" + ((monat2.getDate()<10)?"0"+monat2.getDate():monat2.getDate())); }else if (auswahl == "last3month"){ alert(monat3.getFullYear() + "-" + ((monat3.getMonth()<10)?"0"+monat3.getMonth():monat3.getMonth()) + "-" + ((monat3.getDate()<10)?"0"+monat3.getDate():monat3.getDate())); return (monat3.getFullYear() + "-" + ((monat3.getMonth()<10)?"0"+monat3.getMonth():monat3.getMonth()) + "-" + ((monat3.getDate()<10)?"0"+monat3.getDate():monat3.getDate())); }else if (auswahl == "last6month"){ alert(monat6.getFullYear() + "-" + ((monat6.getMonth()<10)?"0"+monat6.getMonth():monat6.getMonth()) + "-" + ((monat6.getDate()<10)?"0"+monat6.getDate():monat6.getDate())); return (monat6.getFullYear() + "-" + ((monat6.getMonth()<10)?"0"+monat6.getMonth():monat6.getMonth()) + "-" + ((monat6.getDate()<10)?"0"+monat6.getDate():monat6.getDate())); } }
Ciao
QuaeseVielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
----
Der "Fortsetzungsroman" auf www.leuteforum.de
New kind to realize large scalable projects with jQuery: jQuery SDK
Ähnliche Themen
-
Berechnungen für 3d-Ansicht
Von Nord-Süd-Richtung im Forum Coders TalkAntworten: 7Letzter Beitrag: 09.03.10, 18:54 -
SQL/Oracle date/time -> suche Date
Von Goldman im Forum .NET CaféAntworten: 0Letzter Beitrag: 20.05.09, 15:28 -
[C#] Access DATE != DataGridView DATE ? + Daten ändern, aber wie?
Von Blackhawk50000 im Forum .NET Windows FormsAntworten: 22Letzter Beitrag: 31.07.08, 16:26 -
Berechnungen****?
Von Blattspinat im Forum PHPAntworten: 3Letzter Beitrag: 23.01.03, 18:27 -
Berechnungen in HTML?
Von Election im Forum HTML & XHTMLAntworten: 5Letzter Beitrag: 01.03.02, 14:21





Zitieren

Login





