Javascript ist Toll!

FAQ > Javascript

5. September 2005 - 09:22

Datum prüfen

Beschreibung

Um ein Datum auf Gültigkeit zu prüfen muss die Eingabe zuerst zerlegt werden. Die Funktion string2date() geht von der typisch deutschen Form TT.MM.JJJJ aus, wobei die Trennzeichen auch ein Minuszeichen oder Schrägstrich sein können.

Die Eingabe wird an den Trennzeichen gesplittet und daraus dann ein Date() Objekt erstellt. Als nächstes wird der Tag, Monat und das Jahr mit der Eingabe verglichen, stimmen alle Werte überein, wird das Date Objekt zurückgegeben, wenn nicht null

Der Code

javascript
///////////////////////////////////////////////////////////
//
// string2date(string)
//
// string => TT.MM.YYYY HH:MM:SS
// Das Trennzeichen kann ein: "./-" sein
// prüft einen String auf ein gültiges Datum
// gibt ein Datum Objekt oder null zurück
 
function string2date(string) {
    if(!string) return null;
    string += '';
    string = string.replace(/[-\/]/g, '.'); // Trennzeichen normalisieren
    string = string.replace(/[^0-9.: ]/g, ''); // ungültige Zeichen entfernen
    string = string.replace(/ +/g, ' '); // doppelte Leerzeichen entfernen
    var uhr = string.split(" "); // Uhrzeit abtrennen
    var split = uhr[0].split(".");
    var day = parseInt(split[0], 10);
    var month = parseInt(split[1] || 0, 10);
    var year = parseInt(split[2] || 0, 10);
 
    if(isNaN(year)) year = getFullYear();
 
    var check = new Date(year, month - 1, day);
    if(uhr[1]) {
         var uhr = uhr[1].split(':');
         check.setHours( uhr[0] || 0 );
         check.setMinutes( uhr[1] || 0 );
         check.setSeconds( uhr[2] || 0 );
    }
 
    var day2 = check.getDate();
    var year2 = getFullYear(check);
    var month2 = check.getMonth() + 1;
 
    return ( year2 == year && month == month2 && day == day2 ) ? check
    : null;
}
function getFullYear(date){
    if(!date) date = new Date();
    if(typeof date.getFullYear != 'undefined') return date.getFullYear();
    var year = date.getYear();
    if(year < 1000) year += 2000;
    return year;
}

Beispiel

Gib ein Datum in der Form TT.MM.JJJJ ein:
Ausgabe:

Comments (6)
7119 mal gelesen.

6 Kommentare Einen Kommentar hinterlassen »

Pingbacks

1. Pingback Sonntag 8.November 2009:12:31
String Erweiterungen [Javascript ist Toll!]
Text:

[...] Diese Methode beruht auf der string2date()-Funktion [...]

Kommentare

1. Kommentar von seth
Freitag 24.März 2006: 14:33

gudn tach!

#15 string = string.replace(/[-/]/g, '.'); // Trennzeichen normaliesieren

1. s/normaliesieren/normalisieren/
2. dann laesst man allerdings auch sowas wie "12.12/2000" zu. ich wuerde zusaetzlich pruefen, ob die trennzeichen identisch sind.

#16 string = string.replace(/[^0-9^\.^\:^ ]/g, ''); // ungültige Zeichen entfernen

jetzt wird's holprig. ^ negiert eine _komplette_ zeichenklasse, maskierungen sind nicht noetig, also:
/[^0-9.: ]/

#18 var uhr = string.split(" "); // Uhrzeit abtrennen

nach iso (und din) wird die uhrzeit mit einem T vom restlichen datum abgetrennt. naja, und die reihenfolge waere sowieso yyyy-mm-dd...

prost
seth

2. Kommentar von Struppi
Freitag 24.März 2006: 15:31

Joh, danke. Hab's eingebaut.

Wobei ich noch in den Errorlogs gesehen habe, dass:
#15 string = string.replace(/[-/]/g, '.');
/ von manchen Browsern maskiert werden möchte.

3. Kommentar von Struppi
Freitag 24.März 2006: 15:35

Ja, DIN ist das nicht, schrub ich ja, auch wenn ich mittlerweile oft das ISO Format verwende, das TT.MM.JJJJ Format fällt mir immer noch leichter.

Allerdings sollte das anpassen an ISO nicht schwer sein, dazu müssen nur diese Zeilen geändert werden:
var day = parseInt(split[0], 10);
var year = parseInt(split[2] || 0, 10);

In:
var day = parseInt(split[2], 10);
var year = parseInt(split[0] || 0, 10);

4. Kommentar von StefanD
Mittwoch 24.März 2010: 14:27

Habt ihr mal den 30.02.2010 eingegeben ?

5. Kommentar von Struppi
Mittwoch 24.März 2010: 15:23

wieso?
Das ist ein ungültiges Datum, also sollte null oder ein Leerstring rauskommen. Bei dir nicht?

Einen Kommentar hinterlassen

Name (erforderlich)
Mail (wird nicht angezeigt) (erforderlich)
Website

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Powered by WordPress Stop Spam Harvesters, Join Project Honey Pot
rats-wonderful
rats-wonderful
rats-wonderful
rats-wonderful Browser-Statistiken