[RÜCKMELDUNG FEHLT] SimpleDateFormat "if" abfrage für Tag oder Nacht

SM-T110 UND GT-I9300

SM-T110 UND GT-I9300

Fortgeschrittenes Mitglied
17
Hallo, ich habe einen TextView mit den Code
Code:
TextView date=(TextView)findViewById(R.id.dateView);
date.setText("Heute ist der "+new SimpleDateFormat("dd MMMM yyyy, ").format(new Date())+"\nEs ist "+new SimpleDateFormat("HH:mm ").formar(new Date())+"Uhr");


Nun möchte ich dass von 6:00-9:00 uhr anstatt "Uhr" nähmlich "Uhr morgens" da steht, von 9:00-11:00 Uhr soll "Uhr vormittags" da stehen, von 11:00-14:00 Uhr soll "Uhr mittags" da stehen, von 14:00-17:00 Uhr soll "Uhr nachmittags" da stehen, von 17:00-22:00 Uhr soll "Uhr abends" da stehen und von 22:00-5:00 soll "Uhr nachts" da stehen.



wie mache ich das?
 
Hi,

schreib die Uhrzeit in eine Variable und prüfe sie hinterher ab. Je nachdem, welcher Wert (Uhrzeit) drin steht, wird der jeweilige Text dazu ausgegeben.
 
lordzwieack schrieb:
Hi,

schreib die Uhrzeit in eine Variable und prüfe sie hinterher ab.

Ok danke schonmal für den tipp könntest du mir ein Beispiel geben?
 
Wenn du mit dem SimpleDateFormat arbeitest, sollte es da die Methode compareTo() geben.

Kleines Beispiel:
Code:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date jetzt = sdf.parse(new Date());
Date vormittagMin = sdf.parse("09:00");
Date vormittagMax = sdf.parse("11:00");
if (vormittagMin.compareTo(jetzt) == 1 && jetzt.compareTo(vormittagMax) == -1) {
    text.setText("Es ist " + jetzt.toString() + " Uhr vormittags...");
}

Ich hoffe ich hab jetzt selbst nichts durcheinander gewürfelt.. zum Beispiel:
Wenn comparesTo() 1 zurückliefert, ist der Vergleichswert größer, also später. Das gleiche umgekehrt bei -1. Bei Rückgabewert 0 sind die Uhrzeiten identisch.
Du willst hier wissen, ob Uhrzeit JETZT NACH 9 Uhr UND VOR 11 Uhr liegt.

Der Code ist nicht von mir getestet. Aber ich denke, der Sinn dahinter wird klar und du kannst es auf deine Bedürfnisse anpassen. Falls jemand ne bessere Lösung parat hat, gerne her damit. Dann lern ich auch noch was. :)

@SM-T110 UND GT-I9300 Hats geklappt?
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: SM-T110 UND GT-I9300
Danke für den Tipp! Werde mich mal ranprobieren und ausprobieren was geht und wies geht! Danke hat mir sehr weitergeholfen!
 
lordzwieack schrieb:
Wenn du mit dem SimpleDateFormat arbeitest, sollte es da die Methode compareTo() geben.

Kleines Beispiel:
Code:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
Date jetzt = sdf.parse(new Date());
Date vormittagMin = sdf.parse("09:00");
Date vormittagMax = sdf.parse("11:00");
if (vormittagMin.compareTo(jetzt) == 1 && jetzt.compareTo(vormittagMax) == -1) {
    text.setText("Es ist " + jetzt.toString() + " Uhr vormittags...");
}

Ich hoffe ich hab jetzt selbst nichts durcheinander gewürfelt.. zum Beispiel:
Wenn comparesTo() 1 zurückliefert, ist der Vergleichswert größer, also später. Das gleiche umgekehrt bei -1. Bei Rückgabewert 0 sind die Uhrzeiten identisch.
Du willst hier wissen, ob Uhrzeit JETZT NACH 9 Uhr UND VOR 11 Uhr liegt.

Der Code ist nicht von mir getestet. Aber ich denke, der Sinn dahinter wird klar und du kannst es auf deine Bedürfnisse anpassen. Falls jemand ne bessere Lösung parat hat, gerne her damit. Dann lern ich auch noch was. :)

@SM-T110 UND GT-I9300 Hats geklappt?
In der zwischenzeit habe ich übrigens im Inet gelesen es solle auch mit der art
Code:
if(hour<=12)
mText.setText("its morning!")

Natürlich muss man da auch vorher die variablen und so machen aber es sieht leichter aus. aber ich probier erstmal deins aus
 
Habs probiert bei mir wird new Date(); und parse rot unterstrichen und wird gemeldet "try with catch" "throws"
 
Wie sieht das hier aus?


Code:
Calendar c=Calendar.getInstance();
	SimpleDateFormat df=new SimpleDateFormat("HH:mm ");
	String fd=df.format(c.getTime());
	
	if(fd.equals("06:00 ") && fd.equals("09:59 ")){
		date.setText("Heute ist der "+new SimpleDateFormat("dd MMMM yyyy,").format(new Date())+"\nEs ist "+new SimpleDateFormat("HH:mm ").format(new Date())+"Uhr morgens");
		}


Habe ihn noch nicht ausprobiert..
 
SM-T110 UND GT-I9300 schrieb:
Habs probiert bei mir wird new Date(); und parse rot unterstrichen und wird gemeldet "try with catch" "throws"
Wie hast du das bei dir eingebunden? Code von dem Abschnitt wo du das getestet hast wäre nicht übel..
Übrigens hilft mir die genaue Fehlermeldung mehr als "es wird rot unterstrichen und gemeldet ...."

Wie oben schon angemerkt, ich bin nicht davon ausgegangen, dass der Code so wie er hier steht kopiert werden kann und alles funktioniert - nur zur Info, falls das missverstanden wurde.

SM-T110 UND GT-I9300 schrieb:
Habe ihn noch nicht ausprobiert..
So schauts wohl aus. Du schreibst die aktuelle Uhrzeit (sagen wir mal es ist 07:55 Uhr) in Variable fd und prüfst dann unten ab, ob fd GLEICH "06:00" UND GLEICH "09:59" ist. Deine obige Abfrage tritt nur in Kraft, wenn es gleichzeitig 06:00 Uhr und 09:59 Uhr ist.
Doku String - equals: String | Android Developers

EDIT: Bin grad mal am Rumtesten mit dem SDF..
 
Zuletzt bearbeitet:
Hab mal ein wenig rumexperimentiert, war doch etwas kniffliger als ich dachte. Habe bei mir ein kleines Testprojekt mit folgendem Code geschrieben:
Code:
public class MainActivity extends AppCompatActivity {
    TextView text;
    public static final String TAG = "test";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Initialisierung TextView
        text = (TextView) findViewById(R.id.text);
        text.setText("TEST");

        try {
            // Schreibe aktuelles Datum in today
            Date today = new Date();
          
            // Initialisiere Klasse DateFormat (durch getTimeInstance() wird nur die Stunden-, Minuten- und Sekundenangabe zurückgegeben)
            DateFormat f = DateFormat.getTimeInstance();
          
            // Schreibe aktuelle Zeit in String (Format: XX:XX:XX)
            String currentTimeToString = f.format(today);
          
            // Setzen der Grenzwerte
            String mittagMin = "12:00:00";
            String mittagMax = "14:00:00";

            // Vergleiche Werte (ACHTUNG: compareTo <> equals)
            if (currentTimeToString.compareTo(mittagMin) > 0 && currentTimeToString.compareTo(mittagMax) < 0) {
                text.setText("ES IST" + currentTimeToString + "MITTAGS");
            }
        } catch(Exception e) {
            Log.e(TAG, "Error: " + e.toString());
        }
    }
}
Dazu noch folgender Link: String | Android Developers

Schau mal ob das funktioniert.

Der obige Code so wie er da steht ist von mir getestet und hat bei mir funktioniert.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: SM-T110 UND GT-I9300
Cool Danke für deind Mühe. Werde das mal testen!
 

Ähnliche Themen

B
Antworten
3
Aufrufe
1.305
swa00
swa00
netfreak
  • netfreak
Antworten
10
Aufrufe
455
netfreak
netfreak
R
Antworten
9
Aufrufe
730
koje71
koje71
Zurück
Oben Unten