Alternative zu "DateFormat.format(Date date)" ??

  • Antworten:10
EVE Systems
  • Forum-Beiträge: 10

29.09.2010, 11:19:33 via Website

Hi,

ich vertraue dem Datentyp Date nicht mehr, da ich Probleme mit der Zeitzone habe und jetzt "Calendar" benutze.

Gibt es zu diesem Datentyp auch eine Funktion zum Formatieren eines Datums?


Gruß,
Marco

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

29.09.2010, 11:26:37 via Website

Im Jahr 2010 dem Datentyp Date, der bereits mit Java 1.1 (also im letzten Jahrtausend) für deprecated erklärt wurde, nicht mehr zu vertrauen ist ja schon mal was. Ansonsten empfehle ich Google, da stösst man dann ziemlich schnell auf die Klasse SimpleDateFormat - viel Spass beim Weiterrecherchieren.

Antworten
EVE Systems
  • Forum-Beiträge: 10

29.09.2010, 11:53:43 via Website

Danke Mr. Besserwisser.

Ich suche nur etwas um das Datum formatieren zu können.
Mit SimpleDateFormat geht das nicht (korregier mich wenn das nicht zutrifft).

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

29.09.2010, 12:22:12 via Website

Hallo Marco,

Besserwisser ist mal was Neues, wenn man Hilfe zur Selbsthilfe geben möchte - die Welt ist schlecht...

Warum soll den Folgendes nicht gehen?

1package net.thomasmanthey.testbed;
2
3import java.text.SimpleDateFormat;
4import java.util.Calendar;
5
6import android.app.Activity;
7import android.os.Bundle;
8import android.widget.TextView;
9
10public class Test extends Activity {
11 /** Called when the activity is first created. */
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.main);
16 TextView tv = (TextView) findViewById(R.id.tv);
17 Calendar heute = Calendar.getInstance();
18 SimpleDateFormat heuteFormat = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
19 tv.setText(heuteFormat.format(heute.getTime()));
20 }
21}

Oder habe ich deine Anforderung falsch verstanden? Dann bitte mehr Info zu dem, was du vorhast...

Antworten
EVE Systems
  • Forum-Beiträge: 10

29.09.2010, 12:43:51 via Website

Naja, deine Selbsthilfe kahm leicht ironisch rüber... ;)


Dein Beispiel wird sicher funktionieren, aber du verwendest "Date" an folgender Stelle:

tv.setText(heuteFormat.format(heute.getTime()));

Ich suche sowas wie:

1tv.setText(heuteFormat.format(heute));


Gruß,
Marco

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

29.09.2010, 15:21:55 via Website

Sorry, no irony meant...

das hier natürlich auch ein Date verwendet wird, war schon klar. Und ich habe wohl auch eine wichtige Zeile vergessen.
Zwischen Zeile 18 und 19 sollte stehen:

1heuteFormat.setTimeZone(heute.getTimeZone());

So berücksichtigt SimpleDateFormat dann auch eine dem Calendar mitgegebene Zeitzone.

Antworten
EVE Systems
  • Forum-Beiträge: 10

29.09.2010, 19:25:52 via Website

Arbeitet Date denn unabhängig von irgendeiner Zeitzone?

Als ich damit experimentiert habe kahm es mir sehr so vor als ob Date immer abhängig von der Zeitzone im Android Betriebssystem arbeitet!

Das habe ich festgestellt als ich auf meinen Handy und dem Emulator getestet habe.
Da im Betriebssystem unterschiedliche Zeitzonen (Datum aber gleich) eingestellt waren gab es Differenzen von einem Tag.

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

29.09.2010, 19:36:26 via Website

Date kennt nur eines: Die Anzahl der Millisekunden seit dem 01.01.1970. Gespeichert als Long. Von Zeitzonen weiß Date gar nichts - das entspricht aber genau deiner Beobachtung. Aber daher die TimeZone, die du dem Calendar mitgeben und z.B. Beim SimpleDateFormat wieder berücksichtigen kannst. Was ist denn genau deine Aufgabenstellung?

Antworten
EVE Systems
  • Forum-Beiträge: 10

30.09.2010, 08:24:55 via Website

Also so hab ich noch nicht nachvollziehen können wie sich die Zeitzonen auf ein Datum auswirken denke ich...

Ich möchte einfach nur das heutige Datum anzeigen und es für ein par Berechnung verwenden. Dabei haben sich aber teilweise Datumsbereiche verschoben und das lag wohl an den Zeitzonen. Mittlerweile funktioniert es, aber 100% nachvollziehen kann ich es nicht.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

30.09.2010, 17:50:05 via Website

Ich hatte ähnliche Probleme mit der Timezone, es reicht diese im SimpleDateFormat einfach zu setzen, bzw auf 0.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Gelöschter Account
  • Forum-Beiträge: 281

30.09.2010, 19:06:40 via Website

Ich schreib am Wochenende mal ein paar klärende Worte, so meine Zeit es zulässt - Link folgt dann an dieser Stelle.

Antworten