1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Datum in Tag, Monat, Jahr aufsplitten

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von lord_fritte, 10.11.2011.

  1. lord_fritte, 10.11.2011 #1
    lord_fritte

    lord_fritte Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    312
    Erhaltene Danke:
    7
    Registriert seit:
    15.11.2009
    Phone:
    Samsung Galaxy S4
    Hallo, ich möchte ein Datum in Tag, Monat, Jahr aufsplitten, dazu verwendet ich folgenden einfachen Code:
    Code:
    Date datum = new Date();
    int year = datum.getYear();
    int month = datum.getMonth();
    int day = datum.getDay();
    
    in datum steht das richtige Datum drin: "Thu Nov 10 09:23:54 GMT+00:00 2011"
    aber jetzt kommts:
    year: 111
    month: 10
    day: 4
    Aber warum?
     
  2. swordi, 10.11.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    weil derjenige der die java klasse Date gebaut hat, sich wohl irgendwas dabei gedacht hat. was genau, weiß ich nicht :D

    das monat ist 0 basiert. => +1
    den tag bekommst du über datum.getDate() - ohne witz :D
    das jahr musst einfach +1900 rechnen

    Dann bekommst du auch das richtige Datum :)

    es gibt mit sicherheit nen besseren weg.
     
    lord_fritte bedankt sich.
  3. Tom299, 10.11.2011 #3
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    schau dir mal Calendar und SimpleDateFormat an, damit kannst du viel machen, auch wenns evtl. etwas mehr Aufwand ist ;-)
     
  4. DieGoldeneMitte, 10.11.2011 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    "Best preactice" in Java (allgemein, nicht nur Android) ist es, über den Calendar zu gehen.

    Code:
    Calendar cal = new GregorianCalendar();
    cal.setTime(datum);
    int year = cal.get( Calendar.YEAR );
    int month = cal.get( Calendar.MONTH); // 0 based!
    int day = cal.get( Calendar.DAY_OF_MONTH );
    
    ADD: Ah, Tom299 hat Calendar auch schon erwähnt....

    ADD:
    @swordi, @lord_fritte: getMonth() und Konsorten sind seit 15 Jahren deprecated :D
     
    Zuletzt bearbeitet: 10.11.2011
    sgs9000A bedankt sich.
  5. swordi, 10.11.2011 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    das geilste ist, dass monat 0 basiert ist.

    wer hat sich dabei was gedacht ? :D
     
  6. sgs9000A, 11.11.2011 #6
    sgs9000A

    sgs9000A Android-Experte

    Beiträge:
    777
    Erhaltene Danke:
    213
    Registriert seit:
    05.10.2010
    Phone:
    Samsung Galaxy S3
    Tablet:
    Samsung Galaxy Note 10.1 2014
    get.Day ist wohl der Wochentag, sorry, hat was gedauert bei mir ;-)
    Will selbst nur ne kleine Anwendung bauen, wie bekomme ich das heutige Datum im "App Inventor" angezeigt bzw. diese Formel dort hinein, grübel??
    Also echt doof wenn ich jetzt erst komplett Java dafür lernen müßte :blushing:
    Kennt jemand ein Handbuch in deutsch, schäm, :bored:?

    Edit: Wer suchet der findet.

    Clock

    Use a clock component to create a timer that signals events at regular intervals. The clock component also does various conversions and manipulations with time units.

    One use of the clock component is a a timer: set the timer interval, and the timer will fire repeatedly at the interval, signalling a timer event.

    A second use of the clock component is to manipulate time, and express time in various units. The internal time format used by the clock is called an instant. The clock's Now method returns the current time as an instant. The clock provides methods to manipulate instants, for example, return an instant that is several seconds, or months, or years from the given instant. It also provides methods to show the second, minute, hour, day, …, corresponding to a given instant.

    Leider für mich, alles auf english :-(
     
    Zuletzt bearbeitet: 11.11.2011
  7. mradlmaier, 13.11.2011 #7
    mradlmaier

    mradlmaier Gewerbliches Mitglied

    Beiträge:
    158
    Erhaltene Danke:
    17
    Registriert seit:
    28.10.2011
    Calendar deswegen, weil Datum land/kulturspezifisch ist. Dafür unterstützt Calendar allerlei exotische Varianten. In Europa und Amerika gilt der gregorianische...
    Die Calendar Klasse macht das ganze nicht umständlicher, sondern flexibler
     
  8. v Ralle v, 14.11.2011 #8
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Und warum nicht gleich:

    Code:
    Calendar c = Calendar.getInstance();
    Das macht es noch dynamischer ;)
     
    DieGoldeneMitte bedankt sich.
  9. DieGoldeneMitte, 15.11.2011 #9
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Ich sage nur month_names[idx].

    Übrigens gibt es auch noch einen Monat namens UNDECIMBER :D

    @v_Ralle_v oha, den kannte ich noch nicht :)
     
  10. v Ralle v, 15.11.2011 #10
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Kein Ding :) Noch als Anmerkung: in den Beispielprogrammen wird der Aufruf auch immer verwendet (Android Doku), zum Beispiel beim AlarmManager.
     

Diese Seite empfehlen