Guten Tag werte Damen und Herren,
ich habe ein Programm geschrieben welches den Zeitpunkt des Programmstartes festhält und mir dann die Differenz zur aktuellen Zeit in Jahr, Monat, Tag, Stunde,Minute,Sekunde ausgeben kann. Die Methode "LifeTime" aus der Klasse "DatumUhrzeit" welche Sie hier sehen wird über eine Schleife alle 1000 Millis ausgeführt.
Wenn ich jetzt das Programm bei z.B. aktueller Sekunde 40 starte bekomme ich logischerweise bei Beginn einer neuen Minute Negativwerte. Um das zu ändern habe ich bei Negativwerten einfach 60 addiert.
Jetzt zum Problem:
Führe ich den Code aus fehlt mir bei der Ausgabe die Sekunde in der das Ergebnis von "positiver Zahl" zu "negativer Zah"l+60 wechselt und dafür wird am Ende der Minute mehrmals die 0 ausgegeben. bei Sekunden ist das von mir aus nicht so schlimm aber das Problem setzt sich bei Minuten, Stunden ,Tagen etc fort.
Seit vier Tagen suche ich schon nach einer Lösung die Laufzeit eines Programmes auszugeben,damit zu rechnen und es zb im Datumsformat auszugeben aber inzwischen ist der Knoten im Kopf so groß dass ich mich im Staduim "TryAndError" befinde und nach einer externen Meinung fragen muss.
Ich bin ziehmlicher Anfänger darum entschuldige ich mich schonmal im voraus für den vermutlich etwas unsauberen Code.
ich habe ein Programm geschrieben welches den Zeitpunkt des Programmstartes festhält und mir dann die Differenz zur aktuellen Zeit in Jahr, Monat, Tag, Stunde,Minute,Sekunde ausgeben kann. Die Methode "LifeTime" aus der Klasse "DatumUhrzeit" welche Sie hier sehen wird über eine Schleife alle 1000 Millis ausgeführt.
Wenn ich jetzt das Programm bei z.B. aktueller Sekunde 40 starte bekomme ich logischerweise bei Beginn einer neuen Minute Negativwerte. Um das zu ändern habe ich bei Negativwerten einfach 60 addiert.
Jetzt zum Problem:
Führe ich den Code aus fehlt mir bei der Ausgabe die Sekunde in der das Ergebnis von "positiver Zahl" zu "negativer Zah"l+60 wechselt und dafür wird am Ende der Minute mehrmals die 0 ausgegeben. bei Sekunden ist das von mir aus nicht so schlimm aber das Problem setzt sich bei Minuten, Stunden ,Tagen etc fort.
Seit vier Tagen suche ich schon nach einer Lösung die Laufzeit eines Programmes auszugeben,damit zu rechnen und es zb im Datumsformat auszugeben aber inzwischen ist der Knoten im Kopf so groß dass ich mich im Staduim "TryAndError" befinde und nach einer externen Meinung fragen muss.
Ich bin ziehmlicher Anfänger darum entschuldige ich mich schonmal im voraus für den vermutlich etwas unsauberen Code.
Java:
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
class DatumUhrzeit {
int U;
String Datum;
String Uhrzeit;
String RunAge;
int Lebensalter;
Calendar jetzt = Calendar.getInstance(); //Instanziert die Objekte aus der javainternen Klasse Calendar
int Sekunde = jetzt.get(Calendar.SECOND); //Aktuelle Senkunden
int Minute = jetzt.get(Calendar.MINUTE); //Aktuelle Minuten
//int Hour12 = jetzt.get(Calendar.HOUR); //Stunde des Tages 12er Zyklus
int Stunde = jetzt.get(Calendar.HOUR_OF_DAY); //Stunde des Tages 24-er Zyklus
int Tag = jetzt.get(Calendar.DATE); //Aktuelle Tageszahl im Monat
int Monat = jetzt.get(Calendar.MONTH) + 1; //Aktueller Monat
int Jahr = jetzt.get(Calendar.YEAR); //Aktuelles Jahr
//int KalenderWoche = jetzt.get(Calendar.WEEK_OF_YEAR); //Aktuelle Kalenderwoche
//int WochentagZahl = jetzt.get(Calendar.DAY_OF_WEEK); //Tageszahl in der Woche (Sun = 1...)
//int HalbTag = jetzt.get(Calendar.AM_PM); //0= vor 12 ; 1 = nach 12
int Jahrestag = jetzt.get(Calendar.DAY_OF_YEAR); //Aktueller Tag im Jahr
//int March = jetzt.get(Calendar.MARCH);
final long birth = System.currentTimeMillis()/1000;
final int Se = Sekunde;
void Zeit() {
U = Sekunde;
Uhrzeit = Stunde + ":" + Minute + ":" + Sekunde;
Datum = Tag + "." + Monat + "." + Jahr;
}
void lifeTime() {
DatumUhrzeit DT = new DatumUhrzeit();
long lifeTimeSec = System.currentTimeMillis()/1000 - birth;
//if (lifeTimeSec >= 60) {lifeTimeSec = lifeTimeSec - lifeMin * 60;}
System.out.println("LifeTimeSec: " + lifeTimeSec);
//--------------------------------------------------------------------------------------------
int J = DT.Jahr;
int SJ = 0;
if(J==2024||J==2028||J==2032||J==2036||J==2040||J==2044||J==2048||J==2052||
J==2056||J==2060||J==2064||J==2068||J==2072||J==2076||J==2080||J==2084|| // SCHALTJAHRE
J==2088||J==2092||J==2096||J==2100||J==2104||J==2108||J==2112||J==2116) {
SJ = 1;
}
//--------------------------------------------------------------------------------------------
LocalDateTime startYear = LocalDateTime.of(Jahr, Monat, Tag, Stunde, Minute, Sekunde);
LocalDateTime endYear = LocalDateTime.now();
long year = ChronoUnit.YEARS.between(startYear, endYear);
//System.out.println("Jahr: " + year);
LocalDateTime startMonth = LocalDateTime.of(DT.Jahr, Monat, Tag, Stunde, Minute, Sekunde);
LocalDateTime endMonth = LocalDateTime.now();
long month = ChronoUnit.MONTHS.between(startMonth, endMonth);
if(month <0) {month = month+12;}
//System.out.println("Monat: " + month);
LocalDateTime startDay = LocalDateTime.of(DT.Jahr, DT.Monat, Tag, Stunde, Minute, Sekunde);
LocalDateTime endDay = LocalDateTime.now();
long day = ChronoUnit.DAYS.between(startDay, endDay);
if(day <0) {
int M = DT.Monat;
if(M == 1||M==3||M==5||M==7||M==8||M==10||M==12) {day=day+31;}
if(M == 4||M==6||M==9||M==11) {day=day+30;}
if(M == 2 && SJ== 1){day=day+29;}
if(M == 2 && SJ!= 1){day=day+28;}
}
//System.out.println("Tag: " + day);
LocalDateTime startHour = LocalDateTime.of(DT.Jahr, DT.Monat, DT.Tag, Stunde, Minute, Sekunde);
LocalDateTime endHour = LocalDateTime.now();
long hour = ChronoUnit.HOURS.between(startHour, endHour);
if(hour <0) {hour = hour+24;}
//System.out.println("Stunde: " + hour);
LocalDateTime startMinute = LocalDateTime.of(DT.Jahr, DT.Monat, DT.Tag, DT.Stunde, Minute, Sekunde);
LocalDateTime endMinute = LocalDateTime.now();
long minute = ChronoUnit.MINUTES.between(startMinute, endMinute);
if(minute <0) {minute = minute+60;}
//System.out.println("Minute: " + minute);
//----------------------------------------------------------------------------------------------------
LocalDateTime startSecond = LocalDateTime.of(DT.Jahr, DT.Monat, DT.Tag, DT.Stunde, DT.Minute, Se);
LocalDateTime endSecond = LocalDateTime.now();
long second = ChronoUnit.SECONDS.between(startSecond, endSecond);
if(second <0) {second = second +60;}
System.out.println("Sekunde: " + second);
//-----------------------------------------------------------------------------------------------------
RunAge = year + "J " + month + "M " + day + "T " + hour + "h " + minute + "min " + second + "sec";
//System.out.println(RunAge);
}
}