1124 | datemask | Datum formatieren | ||||||||
| ||||||||||
Abzugebende Files: datemask.txt, datemask.java |
Weiters wird ein Formatstring eingelesen, der aus folgenden Platzhaltern bestehen kann:
DD | Tag des Monats zweistellig (01 - 31) |
DAY | Wochentagsname (englisch) |
MM | Monat als Zahl zweistellig (01 - 12) |
MON | Monat englisch, auf 3 Zeichen abgekürzt |
MONTH | Monat englisch, ausgeschrieben |
YY | Jahr zweistellig (die letzten 2 Stellen) |
YYYY | Jahr vierstellig |
Platzhalter koennen innerhalb einer Formatiertung auch mehrfach auftreten (z.B.: DD/DD/DD)
Um Unklarheiten zu vermeiden, hier die englischen Wochentags- und Monatsnamen:
MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAY
JANUARY FEBRUARY MARCH APRIL MAY JUNE JULY AUGUST SEPTEMBER OCTOBER NOVEMBER
DECEMBER
JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC
Weiters dürfen im Formatstring folgende Trennzeichen (an beliebigen Stellen) vorkommen: / . _ -
Ihr Programm soll das eingelesene Datum entsprechend des Formatstrings aufbereiten und ausgeben.
Für die Ermittlung des Wochentages können Sie folgende Formel benutzen; diese liefert den Wochentag des 1. Jänner eines gegebenen Jahres. Daraus können Sie dann den Wochentag des gegebenen Datums ermitteln.
Wochentag 1.1. = (Jahr + floor((Jahr-1)/4) - floor((Jahr-1)/100) + floor((Jahr-1)/400)) mod 7
wobei floor(x) für die größte ganze Zahl <=x steht.
Diese Formel liefert 0 für Sonntag, 1 für Montag, ... , 6 für Samstag.
Lesen Sie weiters den Formatstring ein, der nur aus den oben genannten Platzhaltern und Trennzeichen bestehen darf.
Wochentags- und Monatsnamen sind in Großbuchstaben auszugeben.
Das Unterstreichungszeichen ("_") als Trennzeichen soll in der Ausgabe durch ein Leerzeichen ersetzt werden.
Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.
Sind die Datentypen bei allen Eingaben richtig, die
eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die
Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Eingabedaten |
20 10 1989 DD_MM_YYYY
29 02 1971 DD/MON/YY |
Ausgabedaten |
20 10 1989
FALSCHE EINGABE |
Bemerkung: Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:
java datemask < datemask.i1 > datemask.out1
Das erzeugte File datemask.out1 können Sie dann mit dem mitgelieferten Outputfile datemask.o1 vergleichen.