Variablenwert / Datumsformat konvertieren und neu ausgeben
heinz k.
- javascript
Hallo,
ich suche nach einer Lösung, wie ich ein vom Benutzer eingebenes Datum konvertieren kann.
angenommen ein Benutzer gibt als Datum ein:
1.1.11
1.1.2011
01.01.11
sollen diese Eingaben richtig konvertiert werden zu:
TT.MM.JJJJ -> 01.01.2011
Hat jemand ein Script für soetwas?
DANKE
Lieber heinz k.,
angelehnt an die Funktion sprintf (wie z.B. bei PHP) habe ich mir folgende JS-Funktion gebaut/zusammengesucht:
function printPaddedNumbers () {
if (arguments.length < 2)
return arguments[0];
var i, c, s, d = arguments[0];
for (i = 1; i < arguments.length; i++) {
c = d.replace(/^.*?%(\d)(\d)d.*/, "$1,$2").split(",");
s = c[0].toString();
while (s.length < c[1])
s += c[0].toString();
s = s.substr(0, s.length - arguments[i].toString().length) + arguments[i].toString();
d = d.replace(new RegExp("%" + c[0] + c[1] + "d", ""), s)
}
return d;
};
angenommen ein Benutzer gibt als Datum ein:
1.1.11
1.1.2011
01.01.11sollen diese Eingaben richtig konvertiert werden zu:
TT.MM.JJJJ -> 01.01.2011
Dann benutzt Du obige Funktion mit folgendem Code:
var richtiges_datum = "";
var user_datum = "1.1.11";
var d = user_datum.split(".");
d[2] = d[2] < 2000 ? 2000 + d[2] : d[2];
richtiges_datum = printPaddedNumbers("%02d.%02d.%04d", d[0], d[1], d[2]);
Liebe Grüße,
Felix Riesterer.
Hallo Ingrid,
d[2] = d[2] < 2000 ? 2000 + d[2] : d[2];
habe diesen Code gerade getestet und festgestellt, dass mein Browser hier eine Stringverkettung vorgenommen hat, was zu einer Jahreszahl von 200011 geführt hat. Das ist natürlich nicht sinnvoll. Daher muss diese Zeile so lauten:
d[2] = d[2] < 2000 ? "20" + d[2] : d[2];
Liebe Grüße,
Felix Riesterer.
danke, sieht auf anhieb sehr gut aus, werde ich testen!
werden damit alle möglichen Datum-Eingabeformate berücksichtigt?
@@heinz:
nuqneH
werden damit alle möglichen Datum-Eingabeformate berücksichtigt?
Nein. Ich würde das heutige Datum als 2011-10-06 angeben.
Qapla'