Erste Schritte Aktuelle Uhrzeit auslesen

ohjee

aber endtime (die Aktuelle Uhrzeit)
bleibt doch nicht immer gleich😕
nur startMillis(Startzeit) bleibt nach Eingabe immer gleich.

nach jedem Button klick sollte der doch neu berechnen.

Vorher ging das ja auch
 
Also, im normalfall passiert folgendes, dein buttonklick ruft die methode auf, in dieser werden die werte aus deinen textfeldern ausgelesen und in deinen beiden variablen gespeichert, bei jedem klick passiert das, solange die werte in den feldern gleich bleiben , bleibt auch das ergebnis gleich .
 
Du könntest in der methode die aktuelle zeit deiner variable zuweisen, wenn du das außerhalb der methode machst wird die zeit beim starten der activity der variable zugewiesen
 
hallo

habs auch grade gecheckt🙂

Java:
long endTime = new Date().getTime();

das muss in die Berechnung mit rein
nun wird das Feld bei Klick aktualisiert

puuuuh

jetzt mach ich mich mal an die Fehlerbehandlung
falls nix eingegeben wird🙂

langsam ernährt sich das Eichhörnchen😉
 
Zuletzt bearbeitet:
Das wichtigste daran ist, das du nachvollziehen kannst was genau passiert 😉

Wie lange es dauert ist dabei immer eher nebensächlich :rtfm:

Dann mach dich mal an das Exception Handling :toll:
 
Huhu
da bin ich schon wieder :lol:

hab doch verflixt eine Berechnungsfrage

hier wird ja die Zeitdifferenz mit der Ausgabe Stunden - Minuten - Sekunden berechnet

wie bekomme ich jetzt die Differenz nur in Minuten (Dezimal)

zb. Zeitdifferenz wäre 2:20:00
das wären ja dann 140,00 Minuten

Java:
		 public double ZeitDifferenzBerechnen(){
			    long endTime = new Date().getTime();
			    double ergebnis = 0;
			      
			String[] splitted = EingabeStartzeit.getText().toString().split(":");
			long startHours = Long.parseLong(splitted[0]) * (1000 * 60 * 60); //Stunden
			long startMinutes = Long.parseLong(splitted[1]) * (1000 * 60); //Minuten
			long startSeconds = Long.parseLong(splitted[2]) * 1000; //Sekunden
		    long startMillis = startHours + startMinutes + startSeconds; //Millisekunden
		 
		    
			 ergebnis = endTime - startMillis;

			        return ergebnis;
	}

das Problem ist wenn ich es so mache
Java:
double diffMinuten = ergebnis  /(1000*60) % 60;

zeigt er mir nur 20.00 Minuten an
die Minuten der Stunden (120) sind nich da

guß hannah
 
Zuletzt bearbeitet:
String[] splitted = EingabeStartzeit.getText().toString().split(":");
long startHours = Long.parseLong(splitted[0]) * (1000 * 60 * 60); //Stunden
long startMinutes = Long.parseLong(splitted[1]) * (1000 * 60); //Minuten
long startSeconds = Long.parseLong(splitted[2]) * 1000; //Sekunden
long startMillis = startHours + startMinutes + startSeconds; //Millisekunden

hier ist nen Fehler drinne wenn ich mich jetzt nicht irre


Code:
     long startSeconds = Long.parseLong(splitted[2]) / 1000; //Sekunden

Code:
 [B][COLOR="Red"] /[/COLOR][/B] 1000, nicht [B][COLOR="red"]*[/COLOR][/B]

zu deiner anderen Frage,

dazu müsstest du dein long wert der deine Stunden in Millisekunden referenziert , in minuten umrechnen, ebenso müsstest du es mit den sekunden machen
 
Zuletzt bearbeitet:
So wie du deine Millisekunden zu Stunden umrechnest, musst du die gesamtmillisekunden einfach in Minuten umrechnen
 
meinst du so
dann muss ich ja die endTime auch in Minuten umrechnen ..grübel
Java:
		String[] splitted = EingabeStartzeit.getText().toString().split(":");
		long startHours = Long.parseLong(splitted[0]) * 60); //Stunden
		long startMinutes = Long.parseLong(splitted[1]) ; //Minuten
		long startSeconds = Long.parseLong(splitted[2]) /60; //Sekunden
 long startMillis = startHours + startMinutes + startSeconds; //Millisekunden
 
Du musst das prinzip dahinter verstehen,

Z.b
Java:
long date = new Date ().getTime ();

Gibt dir eine zahl vom typ long welches die Millisekunden von dem zeitpunkt der Initialisierung bis zum referenzdatum enthält.

Jetzt kannst du diese zahl z.b auch komplett in Minuten umrechnen

Java:
int minutes = date / (1000 * 60) % 60;
 
ggf. Musst Du noch ein Typecasting durchführen

Da du hier ein long in ein int umwandeln möchtest

Java:
int minutes = (int) date / (1000 * 60) % 60;
 
Zuletzt bearbeitet:
hi,

irgendwie komm ich nicht zum richtigen Ergebnis🙁
das Ergebnis der StartMinuten passt immer
aber das der EndMinuten nicht
kann das sein das er so die vollen Stunden nicht dazu zählt?

Java:
	 public double ZeitDifferenzMinuten(){
		   
		    long date = new Date ().getTime ();
		    double ergebnisMin = 0;
		      
		String[] splitted = EingabeStartzeit.getText().toString().split(":");
		long startHours = Long.parseLong(splitted[0]) * (1000 * 60 * 60); //Stunden
		long startMinutes = Long.parseLong(splitted[1]) * (1000 * 60); //Minuten
		long startSeconds = Long.parseLong(splitted[2]) * 1000; //Sekunden
	    long startMillis = startHours + startMinutes + startSeconds; //Millisekunden
	    
	    double startMinuten = (double)(startMillis / (1000 * 60));
	    System.out.println(startMinuten); //zb.13:00:00 = 780 min
	    
	    double endMinuten = date / (1000 * 60) % 60;
	    System.out.println(endMinuten);
	    
		ergebnisMin = (endMinuten - startMinuten);
		 //System.out.println(ergebnisMin);
		        return ergebnisMin;
 
hallo,

endlich mal was geschafft 😳
habe mir die Endzeit in Minuten Dezimal jetzt so geholt.
kann man so machen ...oder?

gruß hannah
Java:
	    double startMinuten = (double)(startMillis / (1000 * 60));//Startzeit in Minuten
	   
	    Date date = new Date();
	    Calendar calendar = GregorianCalendar.getInstance();
	    calendar.setTime(date);
	    int hours = calendar.get(Calendar.HOUR_OF_DAY);
	    int min = calendar.get(Calendar.MINUTE);
	    float sec = calendar.get(Calendar.SECOND);
	     
	    double endMinuten = (hours * 60) + min + sec/60;
	    
	    
		ergebnisMin = endMinuten - startMinuten;
		AnzeigeZeitMinuten.setText(deziFormat.format(ergebnisMin));
		        return ergebnisMin;
 
Zuletzt bearbeitet:
Wenn du auf das Ergebnis kommst das du willst ist doch alles super, du müsstest halt deine Stunden und Sekunden jeweils in Minuten umrechnen und mit den den addieren ,so erhältst du die gesamt Minuten
 

Zurück
Oben