Ablaufdatum prüfen
Siegfried
- javascript
Hallo,
meine Funktion sollte einzustellende Artikel abweisen, wo das Ablaufdatum weniger als 3 Monate noch gültig ist.
Ein Problem bekomme ich aber wenn ich z.B. bei (Month-3) als Month den Wert 3,2,1 oder 0 habe. Evtl. könnte ich das mit SWITCH umgehen, oder gibt es eine elegantere Lösung?
...
var now = new Date();
var Month = now.getMonth();
var Year = now.getYear();
if(Year < 999)
Year+=1900;
function validateLotUsableTo()
{
if (document.createLot.lotUsableToYear.value >= Year && document.createLot.lotUsableToMonth.value >= (Month-3))
{
return true;
}
else
{
alert("Artikel, die sich 3 Monate vor dem Verfalldatum befinden, dürfen nicht eingestellt werden!");
return false;
}
}
...
Gruß
Siegfried
PS: Bin nur gelegentlich mit JavaScript unterwegs...
Ahoi,
meine Funktion sollte einzustellende Artikel abweisen, wo das Ablaufdatum weniger als 3 Monate noch gültig ist.
gibt es eine elegantere Lösung?
//Zeitdifferenz in Monaten:
diffMonate = (ablaufGültigkeitJahr*12+ablaufGültigkeitMonat) -(aktuellesJahr*12+aktuellerMonat);
//und dann die Rückgabe, true wenn Differenz kleiner 3 Monate:
return diffMonate<3;
Diese Zeilen kommen mir übrigens komisch vor: eine 9 zuviel?
if(Year < 999)
Year+=1900;
Gruß,
MrWurf
hi,
Diese Zeilen kommen mir übrigens komisch vor: eine 9 zuviel?
if(Year < 999)
Year+=1900;
nein, die browser, die sich wie in der bemerkung zu http://de.selfhtml.org/javascript/objekte/date.htm#get_year beschrieben verhalten, geben für 2004 die zahl 104 zurück. eine abfrage auf < 99 wäre hier also nicht zielführend.
darüber hinaus würde ich aber sowieso eher zur verwendung von http://de.selfhtml.org/javascript/objekte/date.htm#get_full_year raten, welches immer das volle jahr zurückgibt. ist zwar javascript 1.3, aber das sollten aktuelle browser m.E. inzwischen implementiert haben.
gruß,
wahsaga
...
meine Funktion sollte einzustellende Artikel abweisen, wo das Ablaufdatum weniger als 3 Monate noch gültig ist.
gibt es eine elegantere Lösung?//Zeitdifferenz in Monaten:
diffMonate = (ablaufGültigkeitJahr*12+ablaufGültigkeitMonat) -(aktuellesJahr*12+aktuellerMonat);//und dann die Rückgabe, true wenn Differenz kleiner 3 Monate:
return diffMonate<3;
...
Hallo MrWurf!
Vielen Dank für die elegante Lösung, die ich gut implementieren konnte und die einwandfrei funktioniert :-)
Gruß
Siegfried
Muß leider noch einmal darauf zurückkommen...
aktuellesJahr*12+aktuellerMonat liefert mir den Wert 240487, sollte aber doch 24055 sein. Die Zahl könnte sich aus 20040 x 12 x 7 zusammensetzen, aber woher käme denn das?
Die Variablenausgabe mit alert zeigt mir jeweils 2004 und 7 an und nicht 20040?
Gruß Siegfried
...
//Zeitdifferenz in Monaten:
diffMonate = (ablaufGültigkeitJahr*12+ablaufGültigkeitMonat) -(aktuellesJahr*12+aktuellerMonat);
...
Gruß,
MrWurf
Moin,
aktuellesJahr*12+aktuellerMonat liefert mir den Wert 240487,
sieht aus wie ein Mischmasch aus numerischer Addition und Stringverkettung:
also: 2004*12 + "7"
Du must die 7 in eine Zahl parsen. siehe http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int
Gruß,
MrWurf
Hallo MrWurf,
genau, es sah nach einem Mischmasch von numerischer Addition und Stringverkettung aus. Dank Deines Hiweises auf parseInt() konnte ich das lösen.
Herzlichen Dank!
Siegfried
Moin,
...»» sieht aus wie ein Mischmasch aus numerischer Addition und Stringverkettung:
...
Du must die 7 in eine Zahl parsen. siehe http://de.selfhtml.org/javascript/objekte/unabhaengig.htm#parse_int
...
Gruß,
MrWurf