Java Datumsabfrage für Adventskalender...

Timmey92

Commodore
Dabei seit
Okt. 2008
Beiträge
4.552
Es geht um folgenden Code:

Code:
Date date = new Date();
			Integer curMonth = date.getMonth();
			Integer curDay = date.getDay();
			
			if(curMonth != 12 && curDay < buttonNumber)
			{
				Toast.makeText(getApplicationContext(), "Nicht schummeln", Toast.LENGTH_SHORT).show();
				return; 
			}

Er soll überprüfen, ob das Türchen vom Adventskalender schon geöffnet werden darf.
Leider funktioniert er nicht, sondern gibt mir immer zurück "Nicht schummeln".

Theoretisch müsste er doch funktionieren, oder habe ich einen logischen Fehler begangen?
Dazu muss ich noch sagen das es um Android Programmierung geht, die API hat so ein paar Eigenheiten ... müsste im Großen und Ganzen aber gleich sein.

Hoffe ihr könnt mir helfen :)

Edit: wenn ich mit date.toString(); das Datum abfrage, sagt er mir perfekt das Datum und die Uhrzeit an ...
 
Zuletzt bearbeitet:

NiThDi

Lt. Commander
Dabei seit
Feb. 2005
Beiträge
1.950
Also.

Erstmal: Date in der Android API

Bedeutet: Day scheint den aktuellen Wochentag, also 1..7 zurückzugeben. Deshalb kannst du diese Methode nicht verwenden (ist außerdem auch deprecated, also veraltet).
Deine if Abfrage hat auch einen kleinen Fehler, denn du sagst das curDay kleiner sein muss als buttonNumber. Wenn du aber zB. den 5. Dezember hast, steht ja auf dem Button 5 (oder?) -> if Abfrage scheitert. Richtig wäre: curDay <= buttonNumber.

Machs doch einfach mit nem StringTokenizer und date.toString(). Als Trennzeichen nimmst du dann eben einen "." oder "-", je nach dem in welchem Format das Datum zurückgegeben wird.

So hoffe ich konnte helfen.

Edit: Da fällt mir noch auf, dass du Toast mit getApplicationContext() aufrufst. habe mal gelesen dass diese Methode nicht optimal sein soll. Rufs doch einfach im Activity Context auf, also zb:
Code:
Toast.makeText(ActivityName.this, "bla", Toast.Length_LONG).show();
 
Zuletzt bearbeitet:

Shagg

Ensign
Dabei seit
März 2010
Beiträge
215
Wenn ich die Android API richtig verstehe, dann solltest du die Klasse Calendar benutzen, da die Methoden, die du benutzen willst veraltet sind. In Calendar kannst du anscheinend direkt abfragen, was für ein Monat und welcher Tag des Monats ist. Wobei das Feld Monat, einen Integer Wert besitzt. Dann könntest du es so Abfragen, wie du es oben auch machst, nur das du den Monat mit = December abfragen musst.

Den Fehler, den der Post vor mir beschreibt, gibt es nicht. Denn wenn der 5.Dezember ist und man auf den Button mit der 5 drückt, soll die Abfrage scheitern. Denn am 5.12. darf ja die fünfte Tür öffnen.
 

NiThDi

Lt. Commander
Dabei seit
Feb. 2005
Beiträge
1.950
Mein Fehler :)

Hatte den Quelltext wieder nur halb gelesen und nicht beachtet, dass die if Abfrage guckt, ob die Eingabe falsch ist (ich bin von richtig ausgegangen).. naja ist ja auch schon spät :)
 

Loopo

Admiral
Dabei seit
Juli 2002
Beiträge
7.617
Um nicht so einfach schummeln zu können, sollte das Datum aus dem Internet abgefragt werden. ;)
 

Timmey92

Commodore
Ersteller dieses Themas
Dabei seit
Okt. 2008
Beiträge
4.552
Der ist für meine Freundin, die macht sich nicht die Mühe das Datum zu ändern, bzw. da muss man keine Angst haben das sie schummelt^^ ;)
Soll nur Fehleingaben verhindern.

Hatte mir noch überlegt, das es einfacher wäre einen Timestamp für den Tag zu berechnen und wenn der gegenwärtige Timestamp kleiner ist, dann ist es eine Falscheingabe?
Dann würde es auch noch im nächsten Jahr klappen.

Code:
long then = Date.UTC(110, 11, buttonNumber, 0, 0, 0);
long now = System.currentTimeMillis()/1000;

if(now < then)
			{
				Toast.makeText(getApplicationContext(), "Nicht schummeln", Toast.LENGTH_SHORT).show();
				return; 
			}
 
Zuletzt bearbeitet:
Top