isDate() - Methode implementieren!

ich will eine Methode schreiben, die Überprüft, ob ein String als
Date zulässig ist. Leider haut es bei mir nicht genau hin.
z.B. soll auch folgende Angabe ein Date sein!

Der Aufruf:

Vector vct = new Vector();
vct.add( „23.05.1999 12:52354545645545355x“ );
IOUtils.isDate(vct.elementAt(0));

Mein Code:

public static boolean isDate(Object obj){
try{
DateFormat df = DateFormat.getDateInstance();
df.parse((String) obj);
System.out.println(„Datum Ok“);
return true;
}
catch (Exception e){
System.err.println(„Datum wurde erwartet - kein Datum-Wert uebergeben!“);
return false;
}
}

Probiers mal mit der Klasse java.text.SimpleDateFormat, da kannst du beim Erstellen ein Format angeben wie das Datum aussehen darf, in etwa so

SimpleDateFormat sdf = new SimpleDateFormat( „dd.MM.YYYY HH:mm:ss“ );

Date d = sdf.parse( „13.12.2000 11:11:11“ );

Kann auch mit Monaten als Bezeichnung („Nov“, „July“) und vielem mehr umgehen. Hier der Auszug aus der Doku der den Beschreibungsstring im Constructor dokumentiert:

Time Format Syntax:

To specify the time format use a time pattern string. In this pattern, all ASCII letters are reserved as pattern letters, which are defined as the following:

Symbol Meaning Presentation Example


G era designator (Text) AD
y year (Number) 1996
M month in year (Text & Number) July & 07
d day in month (Number) 10
h hour in am/pm (1~12) (Number) 12
H hour in day (0~23) (Number) 0
m minute in hour (Number) 30
s second in minute (Number) 55
S millisecond (Number) 978
E day in week (Text) Tuesday
D day in year (Number) 189
F day of week in month (Number) 2 (2nd Wed in July)
w week in year (Number) 27
W week in month (Number) 2
a am/pm marker (Text) PM
k hour in day (1~24) (Number) 24
K hour in am/pm (0~11) (Number) 0
z time zone (Text) Pacific Standard Time
’ escape for text
‚‘ single quote ’

The count of pattern letters determine the format.
(Text): 4 or more pattern letters–use full form, > 1996.07.10 AD at 15:08:56 PDT
„EEE, MMM d, ''yy“ ->> Wed, July 10, ‚96
„h:mm a“ ->> 12:08 PM
"hh ‚o‘‘’‚clock‘ a, zzzz" ->> 12 o’clock PM, Pacific Daylight Time
„K:mm a, z“ ->> 0:00 PM, PST
„yyyyy.MMMMM.dd GGG hh:mm aaa“ ->> 1996.July.10 AD 12:08 PM

Code Sample:

SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, „PST“);
pdt.setStartRule(DateFields.APRIL, 1, DateFields.SUNDAY, 2*60*60*1000);
pdt.setEndRule(DateFields.OCTOBER, -1, DateFields.SUNDAY, 2*60*60*1000);
// Format the current time.
SimpleDateFormat formatter
= new SimpleDateFormat („yyyy.mm.dd e ‚at‘ hh:mm:ss a zzz“);
Date currentTime_1 = new Date();
String dateString = formatter.format(currentTime_1);
// Parse the previous string back into a Date.
ParsePosition pos = new ParsePosition(0);
Date currentTime_2 = formatter.parse(dateString, pos);

In the example, the time value currentTime_2 obtained from parsing will be equal to currentTime_1. However, they may not be equal if the am/pm marker ‚a‘ is left out from the format pattern while the „hour in am/pm“ pattern symbol is used. This information loss can happen when formatting the time in PM.
For time zones that have no names, use strings GMT+hours:minutes or GMT-hours:minutes.

The calendar defines what is the first day of the week, the first week of the year, whether hours are zero based or not (0 vs 12 or 24), and the time zone. There is one common decimal format to handle all the numbers; the digit count is handled programmatically according to the pattern.

Grüße, Robert

Hallo Robert,
Danke für all Deine Beiträge :smile:
Sag mal:
gibt es in Java noch überhpt. eine Möglichkeit, irgendwie Datum und Zeit vernünftig zu bekommen???
Ich erhalte, was ich auch mache irgendwie folg. Format:
@534c3940

Hat es vielleicht min Win00 was zutun?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

gibt es in Java noch überhpt. eine Möglichkeit, irgendwie
Datum und Zeit vernünftig zu bekommen???

Du meinst du hast ein Date-Objekt und möchtest daraus für die Ausgabe einen schön formatierten String?

Das ist ganz einfach, geht genauso mit dem SimpleDateFormat, neben der Methode parse() für String->Date gibts auch format() für Date->String.

Sonst erzeugst du das SimpleDateFormat-Objekt genauso wie fürs parse(), also mit Format-String im Constructor.

Grüße, Robert

Eigentlich will ich nur durch eine Methode das System nach
Datum/Uhrzeit mit Sek. etc. abfragen. sowas wie z.B.:
System.getDate();
System.getTime();
Wenn geht, dann diese auch formatiert ausgeben!!!
Geht das denn??

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Eigentlich will ich nur durch eine Methode das System nach
Datum/Uhrzeit mit Sek. etc. abfragen. sowas wie z.B.:

Aktuelle Uhrzeit kriegst du in dem du einfach ein neues Date-Objekt ohne Parameter erstellst. Inklusive formatierter Ausgabe würde das so aussehen:

SimpleDateFormat sdf = new SimpleDateFormat( „dd.MM.yyyy“ );
System.out.println( sdf.format( new Date() ) );

Wobei der Format-String natürlich wieder entsprechend anzupassen ist. :smile:

Grüße, Robert

Das klappt ja! Wahnsinn!
Nur wenn es 20:00 u.s.w. Uhr ist bekomme ich 08:00 u.s.w… Wie
kann ich das einstellen?
Ausserdem: kennst Du ein Buch wo auf soetwas genauer
eingegangen wird?
Gruss
Fabian

Aktuelle Uhrzeit kriegst du in dem du einfach ein neues
Date-Objekt ohne Parameter erstellst. Inklusive formatierter
Ausgabe würde das so aussehen:

SimpleDateFormat sdf = new SimpleDateFormat( „dd.MM.yyyy“ );
System.out.println( sdf.format( new Date() ) );

Wobei der Format-String natürlich wieder entsprechend
anzupassen ist. :smile:

Grüße, Robert

Nur wenn es 20:00 u.s.w. Uhr ist bekomme ich 08:00 u.s.w… Wie
kann ich das einstellen?

Im Format-String gibt es zwei Möglichkeiten für Stunden. Kleines h für 2 x 12 Stunden, großes H für 1 x 24 Stunden, also probiers mal mit „HH:mm:ss“ für die Zeit.

Ich hab diese Informationen aus dem MSDN Library, müßte aber in der API-Doku von Sun recht ähnlich sein. Ist IMHO die beste Anlaufstelle für Java-Infos, dort findest du auch haufenweise Tutorials und so.

Konkret ein Buch von dem ich weiß, dass genau diese Thematik behandelt wird kenne ich keines, sorry.

Grüße, Robert