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

Datumstring in Integerwert wandeln

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von r4in, 06.07.2012.

  1. r4in, 06.07.2012 #1
    r4in

    r4in Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    Hi Leute,

    wie bekomme ich aus einem String wie "31.08.2012" die Millisekunden seit 1970 raus?

    Ich muss das aktuelle Datum mit einem Ablaufdatum vergleichen, hat jemand eine Idee?

    Code:
    SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
            try {
                Date date = (Date)formatter.parse("31.08.2012"); 
                System.out.println(date);
                System.out.println(actTime);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
    funzt nicht, Ergebnis ist ( Fri Aug 31 00:00:00 MESZ 2012 ) was hab ich in der Freitag kurz vor Feierabendlaune was übersehen?? ;)


    Danke im vorraus.
     
  2. Thyrion, 06.07.2012 #2
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Wie wäre es mit der after()-Methode von Date?

    -> Date | Android Developers


    Ansonsten gäbe es noch compareTo().
    Um die Anzahl der Millisekunden seit 1.1.1970 herauszufinden, gibt es getTime().
     
    r4in bedankt sich.
  3. Tom299, 06.07.2012 #3
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Code:
    date.getTime()
    
    ?
     
    r4in bedankt sich.
  4. keinbrain, 06.07.2012 #4
    keinbrain

    keinbrain Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    System.currentTimeMillis() millisekundn seit 1970
     
    r4in bedankt sich.
  5. r4in, 06.07.2012 #5
    r4in

    r4in Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    Also wie die ich die aktuelle millis bekomme weiß ich.
    Ich muss nur diesen String "31.08.2012" in die Millis ungerechnet bekommen, damit ich die vergleichen kann, irgendwie bin ich da gerade zu blöd für.

    Muss ich mir den Tag, Monat und Jahr aus dem String parsen und dann umrechnen, dafür muss es doch ne funktion geben,oder ??
     
  6. Tom299, 06.07.2012 #6
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Calendar benutzen, da kannst du alles einstellen wie du brauchst
     
    r4in bedankt sich.
  7. r4in, 09.07.2012 #7
    r4in

    r4in Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    Die Lösung meines Problems war einfacher als gedacht.

    um einen String wie "31.08.2012" in einen long Wert (Millisekunden) zu wandeln, muss man folgendes tun.

    Code:
            String tmpAus = "31.08.2012";
            String tmpAkt = "09.02.2012";
           
            SimpleDateFormat sdfToDate = new            SimpleDateFormat("dd.MM.yyyy");
                Date date1;
                Date date2;
                try {
                    
                    date1 = sdfToDate.parse(tmpAkt);
                    date2 = sdfToDate.parse(tmpAus);
    
       
                   // getTime() gibt die Millisekunden zurück, die man dann   vergleichen kann             
                    Toast.makeText(getApplicationContext(), "Datum  aktuell = " + date1.getTime() + " Datum Auslauf = " + date2.getTime(), Toast.LENGTH_LONG).show();
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
    
    hab da wieder zu kompliziert gedacht.

    Danke nochmal für die ganzen Antworten.
     
  8. Thyrion, 09.07.2012 #8
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Für den Vergleich brauchst du die Millisekunden aber nicht (bzw. lass sich das Java-Framework darum kümmern).

    EDIT: siehe before(), after() oder compareTo().
     
    Zuletzt bearbeitet: 09.07.2012
    r4in bedankt sich.
  9. r4in, 09.07.2012 #9
    r4in

    r4in Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    88
    Erhaltene Danke:
    3
    Registriert seit:
    16.09.2010
    Stimmt hast recht, hab nochmal nachgeguckt und benutze jetzt Date.after(DATE);

    Code:
    private void checkTestphase() throws ParseException{
        
                String tmpAus = "08.07.2012";
                SimpleDateFormat sdfToDate = new SimpleDateFormat("dd.MM.yyyy");
                Date dateAktuell = new Date();
                Date dateAuslauf;
                
                dateAuslauf = sdfToDate.parse(tmpAus);
                
                
            if(dateAktuell.after(dateAuslauf)){
            
                Builder build = new Builder(login.this);
                build.setIcon(R.drawable.alert);
                build.setCancelable(false);
                build.setTitle("Achtung");
                build.setMessage("Die Testphase ist abgelaufen!");
        
                build.setPositiveButton("Programm beenden",
                        new DialogInterface.OnClickListener() {
        
                            public void onClick(DialogInterface dialog, int which) {
                                finish();
                            }
                        });
                build.show();
            }
        }
    
    Danke, muss ich Freitag nicht richtig gelesen haben ;)
     

Diese Seite empfehlen