heinz k.: Variablenwert / Datumsformat konvertieren und neu ausgeben

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

  1. 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.11

    sollen 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.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. 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.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
      1. danke, sieht auf anhieb sehr gut aus, werde ich testen!

        werden damit alle möglichen Datum-Eingabeformate berücksichtigt?

        1. @@heinz:

          nuqneH

          werden damit alle möglichen Datum-Eingabeformate berücksichtigt?

          Nein. Ich würde das heutige Datum als 2011-10-06 angeben.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)