Jun 22

Ändere den Code

DateFormat d = DateFormat.getDateInstance(DateFormat.SHORT);
d.setLocale(“EN”,”UK”);
Calendar c = new GregorianCalendar(1978,5,18);
System.out.println(d.format(c.getTime()));

so ab, dass er erfolgreich compliert und in englischer Schreibweise das heutige Datum  (6/20/11) ausgegeben wird.

Antwort/ answer

Jun 16

Was ist der Output des folgenden Codes?

DateFormat d = DateFormat.getDateInstance(DateFormat.SHORT);
d.setLocale(“EN”,”UK”);
Calendar c = new GregorianCalendar(1978,5,18);
System.out.println(d.format(c.getTime()));

Antwort/ answer
Apr 21

Heute möchte ich ein paar Tücken der Locale-Klasse erläutern.

Fangen wir mit der Definition einer chinesischen Locale an:

Date datum = new Date (123456789L);

Locale chinesisch = new Locale(“zh”,”CN”);
DateFormat df_china = DateFormat.getDateInstance(DateFormat.FULL,chinesisch);
System.out.println(df_china.format(datum));

Alles wird einwandfrei compiliert und ausgeführt, nur der Output ist etwas gewöhnungsbedürftig: 1970?1?2? ???

Dies daran, dass zwar die Klasse java.util.Locale diese Funktionen zur Verfügung stellt, unser System aber diese Zeichen nicht kennt.

Zusätzlich ist zu beachten, dass eine einmal festgesetzte Locale eines DateFormat nicht mehr geändert werden kann. Es existiert einfach keine Methode hierfür… also aufgepasst, falls im SCJP solche Fragen auftauchen :)

Apr 19

Mit dieser Klasse können Länder- und sprachspezifische Einstellungen vorgenommen werden.

Hier ein paar Beispiele:

Locale germany = new Locale(“de”, “DE”);
Locale englisch_uk = new Locale (“en”,”UK”);
Locale portugisisch_brasilien = new Locale (“pt”,”BR”);

als erstes wird die Sprache definiert, in unseren Beispielen deutsch, englisch und portugiesisch. Die zweite Variable sagt aus, auf welches Land sich diese Sprache bezieht, also deutsch in Deutschland, englisch in England und portugiesisch in Brasilien.

Diese Einstellungen müssen jetzt im DateFormat eingebettet werden, um diese Einstellungen vornehmen zu können:

DateFormat df_deutsch = DateFormat.getDateInstance(DateFormat.FULL,germany);
DateFormat df_uk = DateFormat.getDateInstance(DateFormat.FULL, englisch_uk);
DateFormat df_brasilien =DateFormat.getDateInstance(DateFormat.FULL,portugisisch_brasilien);

Es wird also nur noch das erzeugte Objekt bei der Erzeugung des DateFormat-Objektes hinzugefügt. Alles weitere wie gehabt:

Date datum = new Date (123456789L);

System.out.println(df_deutsch.format(datum)); //Deutsches Format: Freitag, 2. Januar 1970
System.out.println(df_uk.format(datum)); // Englisch-Großbritannien Format: Friday, January 2, 1970
System.out.println(df_brasilien.format(datum)); // Brasilianisch-portugisisches Format: Sexta-feira, 2 de Janeiro de 1970

Tagged with:
Apr 17

Heute geht es um die (Rück-)Umwandlung eines Datums in einen String:

Date datum = new Date(123456789L);
DateFormat a = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(a.format(datum));
// Ausgabe: 02.01.70 11:17

String string = a.format(datum); // Umwandlung in einen String
System.out.println(string); // Ausgabe gleich der formatierten Ausgabe: 02.01.70 11:17

Date neues_datum = new Date();

try {
neues_datum = a.parse(string);
// Zurückparsen des Strings in ein Datum
System.out.println(neues_datum.toString()); // Ausgabe des Datums: Fri Jan 02 00:00:00 CET 1970
} catch (Exception e) { e.printStackTrace(); }

Bitte beim Rückparsen (bzw bei Fragen zu solchen) genau aufpassen; da ja die Zeit nicht dem String übergeben wurde, kann diese auch nicht in das Datum zurückgeparst werden. Es wird also die default-Zeitangabe 00:00:00 gespeichert.

Apr 15

Heute wollen wir uns die Befehle zur Datumsformatierung anschauen:

Date datum = new Date(123456789L); // Anlage des zu formatierendenden Datums
DateFormat a = DateFormat.getInstance(); // Anlage eines Format-Objektes

System.out.println(datum.toString()); // “ursprüngliches” Datumsformat: Fri Jan 02 11:17:36 CET 1970
System.out.println(a.format(datum)); // Urspungsformat: 02.01.70 11:17

DateFormat b = DateFormat.getDateInstance();
System.out.println(b.format(datum)); // Urspungsformat: 02.01.1970

DateFormat c = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(c.format(datum)); //Ausgabe: 02.01.70

DateFormat d = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(d.format(datum)); //Ausgabe: 02.01.1970

DateFormat e = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(e.format(datum)); //Ausgabe: 02. Januar 1970

DateFormat f = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println(f.format(datum)); //Freitag, 2. Januar 1970

Apr 05

Die nächste Zeit möchte ich ein paar Klassen vorstellen, deren Handhabung besonders gerne im SCJP abgefragt wird.  Wie immer fangen wir mit einer kleinen Übersicht an, ins Detail gehen wir dann die nächten Tage:

java.text.NumberFormat
Diese Klasse formatiert Nummern und Währungen.

java.util.Calendar
Diese Klasse bietet sehr viele Möglichkeiten, Datum und Zeit zu manipulieren.

java.text.DateFormat

Diese Klasse formatiert hauptsächlich Datum in verschiedene Ausgabeformate.

java.util.Date
Diese Klasse ist eher veraltet, kann aber als Brücke zwischen DateFormat und Calendar dienen.

java.util.Locale
Hier werden die Klassen DateFormat und NumberFormat zusammengeführt und erweitert. So kann z.B. das Datum 05.04.2011  in “Tuesday, April 5th 2010″ umgewandelt werden.

preload preload preload
http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
Webbhotell Top Blogs