PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java2ME: Calendar und Timezone



BlueJay
09-07-2007, 13:45
Hallo Leute,

ich möchte im J2ME das aktuelle Datum abfangen für meine Anwendung. Im Test geht die Uhr des Midlets gegenüber der Testumgebung leider 2 Stunden nach.

Das Midlet soll sich die jeweils gültige Systemzeit holen, die ich leider nicht vorher weiss.

Was mache ich falsch?

Code:


Calendar my_date=Calendar.getInstance();

String d_str=mach_datum(my_date);
System.out.println(d_str);

...

String mach_datum(Calendar cal)
{
String t="";
int t1;
t1=cal.get(Calendar.DATE);
if (t1<10) t=t+"0";
t=t+t1+".";
t1=cal.get(Calendar.MONTH)+1;
if (t1<10) t=t+"0";
t=t+t1+".";
t1=cal.get(Calendar.YEAR)%100;
if (t1<10) t=t+"0";
t=t+t1+" ";
t1=cal.get(Calendar.HOUR_OF DAY);
if (t1<10) t=t+"0";
t=t+t1+":";
t1=cal.get(Calendar.MINUTE);
if (t1<10) t=t+"0";
t=t+t1+":";
t1=cal.get(Calendar.SECOND);
if (t1<10) t=t+"0";
t=t+t1;
return t;
}



so long,
BlueJay

mehlvogel
17-07-2007, 08:09
Ich kenn mich in der ME Entwicklung zugegebenermaßen nicht aus, aber vielleicht ist es doch hilfreich.

Die zwei Stunden Offset hören sich natürlich nach einer falschen Zeitzone an, vielleicht kannst du ja an die getInstance() Methode ein Timezone Objekt mitübergeben. Falls das nicht möglich ist, musst du vielleicht die auf dem Rechner eingestellte Zeitzone checken.

Zu der mach_datum() Funktion zumindest im SE gibt es die Klasse SimpleDateFormat, mit der man das Format wesentlich einfacher definieren kann. Ich weiß wie gesagt nicht, welche Einschränkungen man bei der ME hat, aber vielleicht gibts die ja auch da. :)

BlueJay
17-07-2007, 13:15
Die zwei Stunden Offset hören sich natürlich nach einer falschen Zeitzone an, vielleicht kannst du ja an die getInstance() Methode ein Timezone Objekt mitübergeben. Falls das nicht möglich ist, musst du vielleicht die auf dem Rechner eingestellte Zeitzone checken.


Die entgültige Timezone weiss derzeit nur das Handy meines a***llerliebsten Ehemannes. Für den und seine Freunde ist der Kram letzendlich. Dummerweise sitzen die auch noch in verschiedenen Zeitzonen.

Also, irgendwie wird es auf letzteres hinauslaufen. Tips dazu wären spitze, aber das sprengt wahrscheinlich den Rahmen von mrunix.



Zu der mach_datum() Funktion zumindest im SE gibt es die Klasse SimpleDateFormat, mit der man das Format wesentlich einfacher definieren kann.

Was meinst du, warum ich mir diesen Kram aus den Rippen leiern musste (mit einem neidischen Seitenblick)! Und heute erfinden wir die CSV-Verarbeitung a la Cookie neu, da split ebenfalls ein Fremdword scheint.
ME ist Steinzeit, aber die Kaffeemaschine, äh, das Handy kapiert, was man will.

so long,
BlueJay

anda_skoa
17-07-2007, 14:38
TimeZone.getDefault(), eventuell zusätzlich Locale.getDefault()

2 Stunden Abweichung sind schon ein starker Hinweise, dass das Gerät auf UTC läuft, denn das ist derzeit (Europäische Sommerzeit) 2 Stunden "hinter" uns.

Ciao,
_

BlueJay
17-07-2007, 20:26
UTC=Volltreffer, das gibt mir TimeZone.getDefault().getID() aus.
Kann es sein, dass es auf dem Handy korekt ausgegeben wird?

BlueJay
18-07-2007, 15:14
So, hatte ein von T-mobile installiertes Motorola-Handy zum Testen:

Der Calendar arbeitet einwandfrei und nutzt die hiesige Zeitzone.

Merke: hier kann man getrost die vom Emulator ausgelesene Zeit vergessen, die wohl nicht die Systemzeit von Linux abfragt, sondern stur UTC liefert.