Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Java2ME: Calendar und Timezone

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Java2ME: Calendar und Timezone

    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:
    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
    Geändert von BlueJay (09-07-2007 um 13:46 Uhr) Grund: Dreckfehler
    Eigentlich ganz einfach, wenn man's weiss!

  2. #2
    Registrierter Benutzer
    Registriert seit
    02.12.2002
    Ort
    Darmstadt
    Beiträge
    615
    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.
    Seine Rätselhaftigkeit wird nur durch seine Macht übertroffen!

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von mehlvogel Beitrag anzeigen
    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
    Geändert von BlueJay (17-07-2007 um 13:17 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    UTC=Volltreffer, das gibt mir TimeZone.getDefault().getID() aus.
    Kann es sein, dass es auf dem Handy korekt ausgegeben wird?
    Geändert von BlueJay (18-07-2007 um 10:33 Uhr)
    Eigentlich ganz einfach, wenn man's weiss!

  6. #6
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    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.
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •