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
/////////////////////////////////////////////////////////// // // 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
ähnliche Artikel
- 18. November 2011 -- LED Editor (1)
LED Scroller Chareditor Dieses Skript dient zum...
- 13. Mai 2009 -- String Erweiterungen (5)
Eine der Eigenschaften von Javascript, die sie von...
- 29. April 2009 -- Online Molmassen Rechner (29)
Ein kleines Javascript aus der Welt der Chemie. Der...
Comments (7)
12125 mal gelesen.
12125 mal gelesen.
7 Kommentare
Leave a comment »
Seiten:
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
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.
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);
8. November 2009: 12:31
[…] Diese Methode beruht auf der string2date()-Funktion […]
24. März 2010: 14:27
Habt ihr mal den 30.02.2010 eingegeben ?
24. März 2010: 15:23
wieso?
Das ist ein ungültiges Datum, also sollte null oder ein Leerstring rauskommen. Bei dir nicht?
1. Juli 2011: 1:27
Liebe Leute,
ihr wisst ja gar nicht, wie glücklich mich das macht gerade. Genau so etwas habe ich gesucht! Leider bin ich nur in HTML, CSS2 und ein wenig, klein wenig in Jaca(cript) fit, deshalb habe ich eine Frage.
Ich habe ein Formular programmiert, mit dem Besucher einer Website 2 Daten, ein Anreise und ein Abreisedatum eingeben können, momentan werden die zwei Felder auf 10 Zeichen begrenzt und ich habe es nach 2 Wochen geschafft, die Felder auf 10 Zeichen zu begrenzen und alle Werte bis auf ganze Zahlen und Punkt, Schrägstrich, Bindestrich einzugrenzen. Das Feld ist leer, wird während der Eingabe bereits abgeprüft. Was ich gern wollte, war, dass, wenn die Daten eingegeben werden, beim Verlassen der Felder das Datum so formatiert wird, wie es hier passiert, aber ohne noch einen Check Button zu klicken, sozusagen müsste die Prüfung und – insofern korrekt – die Formatierung bei „onBlur“ erfolgen. Auch bräuchte ich ausschließlich die Formatierung ab Tag bis zum Jahr, nicht darüber hinaus.
Momentan sieht mein Code so aus:
<blockquote cite="
„>
Hat jemand von Euch eine Idee, wie genau ich Eure Idee hier in mein Projekt aufnehmen könnte und dürfte ich, wenn ich einen Link zu Euch positioniere/ die Credits klarstelle, auf Eure Hilfe zurückgreifen? Das wäre supertoll, denn ich bin wirklich ziemlich aufgeschmissen.
Liebe Grüße und Danke für die Idee! Micha
Das Neuste
Kategorien
am meisten gelesen
zuletzt kommentiert
Archiv
Wortwolke
Bugs about:config google Datenschutz prototype LED Scroller überwachung OOP Drag&Drop Tool Animation Browser Privatsphäre linux Wordpress Javascript String Laufschrift Firefox LED