zeit überscheidungen ermitteln

Status
Nicht offen für weitere Antworten.
J

javagast

Gast
hallo liebe java gemeinde,

ich muss ein zeiterfassung umsetzten. in dieser zeiterfassung kann der benutzer zeiten für einen tag erfassen die auch in den nächsten tag reichen, also über 00:00 hinaus.

beispiele:

7.5 10:00 bis 7.5 14:00
7.5 22:00 bis 8.5 01:00
8.5 04:00 bis 5.5 10:00

das beispiel zeigt keien überscheidungen!

ich habe soweit das ganze auch umgesetzt.

mein problem ist aber wenn der benutzer z.b den datensatz 7.5 22:00 bis 8.5 01:00 ändert auf 7.5 22:00 bis 8.5 05:00
erkennt er nicht eine überschneidung. das liegt an folgendem:

ich übergebe meiner methode eine liste mit allen zeiten für den tag in dem die neue zeit eingefügt werden soll z.b 10:00 bis 14:00 (String[]) und 22:00 bis 01:00 (auch String[]). beide zeiten liegen in dem tag bzw. die zweite beginnt in dem tag.

ich habe ein array mit 1440 stellen (1 tag als minuten) und schreibe alle zeiten für den tag in das array mit einsen (1)
z.B 10:00 bis 14:00 = arraystelle 600 bis 840 und für die zweite zeit in diesem konkreten beispiel 1320 (22:00) bis 1439 (23:59).

dann nehme ich die neue zeit z.b 7.5 21:00 bis 7.5 23:00 und trage diese auch ein 1260 (21:00) bis 1360 (23:00). dardurch erhöht sich die anzahl an den einzelnen arraystellen um 1. folge an den stellen für 22:00 bis 23:59 erhalte ich eine anzahl höher als 1. damit weiß ich wenn ich das array durchlaufe das eine überschneidung statt gefunden hat.

mein problem ist das wenn ich die zeit 7.5 22:00 bis 8.5 05:00 eintrage klappt das ganze nicht, weil ich nur explizit einen tag überprüfe. ich will ungern noch den zweiten tag in einen array abbilden.

gibt es vielelicht eine bessere einfacher lösung?
das scheint mir so nicht optimal.

anbei der quelltext:


Code:
    private boolean methode(List<String[]> worktimes, String[] newWorktime){
        
        int[] tArray = new int[1440];
        
        for (int i = 0; i < worktimes.size(); i++) {
            String[] sTime;
            String[] eTime;
            int sPos;
            int ePos;
            
            if(worktimes.get(i)[0].equals("")){
                eTime = worktimes.get(i)[1].split(":");
                sPos = 0;
                ePos = (new Integer(eTime[0]) * 60) + new Integer(eTime[1]); 
            }
            else if(worktimes.get(i)[1].equals("")){
                sTime = worktimes.get(i)[0].split(":");
                sPos = (new Integer(sTime[0]) * 60) + new Integer(sTime[1]);
                ePos = 1439;
            }
            else{
                sTime = worktimes.get(i)[0].split(":");
                eTime = worktimes.get(i)[1].split(":");
                
                sPos = (new Integer(sTime[0]) * 60) + new Integer(sTime[1]);
                ePos = (new Integer(eTime[0]) * 60) + new Integer(eTime[1]);
            }
            
            for (int j = sPos; j <= ePos; j++) {
                tArray[j] += 1;
            }  
        }
        String[] newSTime = newWorktime[0].split(":");
        String[] newETime = newWorktime[1].split(":");
        
        int newSPos = (new Integer(newSTime[0]) * 60) + new Integer(newSTime[1]);
        int newEPos = (new Integer(newETime[0]) * 60) + new Integer(newETime[1]);
        
        if(newSPos > newEPos){
            newEPos = 1439;
        }
        
        for (int i = newSPos; i <= newEPos; i++) {
                tArray[i] += 1;
        }
        
        //auswertung
        for (int i = 0; i < tArray.length; i++) {
            if(tArray[i] > 1 ){
                System.out.println("überschenidung"); 
            }

vielen vielen dank.

grüße
 
G

Guest

Gast
Ich glaub das ganze wird nur so schwer weil du Strings verwendest. Ich würde die empfehlen Datumsobjekte zu nutzen.

Java Insel: Date

Diese lassen sich recht einfach Vergleichen trotz dem Übergang auf ein anderes Datum.
Du kannst Strings auch in Datumsobjekte umwandeln und wieder zurück.
 
S

SlaterB

Gast
wiviele Tage können die Dati denn auseinanderliegen, auch Monats/ Jahreswechsel?

suche dir ein Referenzdatum und berechne die Anzahl der Minuten seit dem,
Beispiel:
Tag 7, Stunde 13 =~ 15000 Minuten seit 1. Tag des Monats, Stunde 0
Tag 8, Stunde 2 =~ 16000 Minuten seit 1. Tag des Monats, Stunde 0

so bekommst du Intervalle der Form
15000-16000
und
15800-16600
da die Überschneidung festzustellen dürfte ja leicht sein,

andererseits: wenn man so genau Stunden/ Tage und vielleicht Monate/ Jahre umrechnet, dann könntest du ja eigentlich auch die Dati an sich vergleichen in welcher Form auch immer sie vorliegen:
Tag 5, Stunde 6 vs Tag 5 Stunde 3 -> erst die Tage vergleichen, wenn gleich dann die Stunden,
für zwei Intervalle mit insgesamt 4 Dati brauchts mehr als einen Vergleich, aber nicht viel mehr, ist doch gut in ein paar Zeilen zu programmieren

--------

am einfachsten: Date oder Calendar-Objekte erstellen und dessen compare-Operation nutzen
 
J

javagast

Gast
hallo,

ich müsste dazu sagen, das es "beliebig" viele zeitpaare sein können die pro tag erfasst werden.

deshalb verstehe ich den lösungsansatz nicht so ganz.

im endeffekt können pro tag mehrere zeitpaare erfasst werden und eines davon kann (muss nicht) in den nächsten tag gehen, also über 24 uhr hinaus. und ich möchte für den eben genannten tag ein weiteres zeitpaar angeben. das evt auch in den nächsten tag rutschen kann. und da steckt das problem.

das mit dem referenzdatum geht in diesem fall ja nicht, oder?


grüße
 
G

Guest

Gast
hallo,

sorry wollte nicht unhöfflich sein!
dann, verstehe ich denn ansatz nicht. vielleicht könnten wir ihn dann etwas genauer herausarbeiten.

das wäre super.

grüße
 
S

SlaterB

Gast
warst nicht unhöflich, ich habe nur meine Aussage bekräftigt,
ich sehe keinen Sinn darin, meine Aussgabe zu wiederholen, da ich nicht weiß, was daran unverständlich sein könnte
(deshalb auch das kurze 'doch')

du musst schon näher beschreiben, was du daran 'nicht ganz verstehst'
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Zeit Optimierung - bzw. ms Optimierung Allgemeine Java-Themen 35
J Message Box soll bei bestimmter Zeit angezeigt werden Allgemeine Java-Themen 19
K CET-Zeit benutzen Allgemeine Java-Themen 6
K Geschätze Zeit implementieren Allgemeine Java-Themen 14
Blender3D AWT Fehlerhafte Zeit bei Calender und Date DateFormat Allgemeine Java-Themen 8
2 Joda Time - Localtime mit anderer Zeit vergleichen? Allgemeine Java-Themen 1
O Java Hardware Software Zeit Allgemeine Java-Themen 7
H Bestimmte Aufgaben zur bestimmter Zeit/ in bestimmten Intervallen Allgemeine Java-Themen 3
F Zeit ermitteln Allgemeine Java-Themen 2
Q Zeit in GUI selbst aktualisieren Allgemeine Java-Themen 5
D Klassen Zeit aus NMEA-Stream in SimpleDateFormat Allgemeine Java-Themen 17
M AudioClip in Spiel mehrfach in kurzer Zeit abspielen Allgemeine Java-Themen 3
N java.util.Date - Zeit auf 00:00 setzen Allgemeine Java-Themen 3
R Raum und Zeit Allgemeine Java-Themen 11
S Zeit Allgemeine Java-Themen 4
Z zeit zwischen maus drücken und loslassen Allgemeine Java-Themen 7
T Methodenparameter zur Compile-Zeit überprüfen Allgemeine Java-Themen 8
J Lizenz auf Zeit Allgemeine Java-Themen 8
X Codeabarbeitung innerhalb des Hauptprogramms für bestimmte Zeit unterbrechen Allgemeine Java-Themen 2
prakdi Zeit zum Durchlauf der Schleifen unverständlich!? Allgemeine Java-Themen 3
A JavaVM Zeit Windows 7 Allgemeine Java-Themen 9
T Zeit von einem Server/Webseite auslesen und in eigener GUI anzeigen Allgemeine Java-Themen 6
C Leerzeilen verbrauchen Zeit! Allgemeine Java-Themen 5
J Datum und Zeit Allgemeine Java-Themen 4
data89 Zeit-Diagramm erstellen Allgemeine Java-Themen 11
G JComboBox getSelectedItem Zeit Allgemeine Java-Themen 5
Kr0e Sekunden -> Zeit Allgemeine Java-Themen 14
T Mit Datum und Zeit rechnen Allgemeine Java-Themen 8
B System CPU Zeit / Last auslesen Allgemeine Java-Themen 2
P Thread Demonstrationr eist durch die Zeit Allgemeine Java-Themen 4
A Compilierdatum/Zeit in Code eingenerieren Allgemeine Java-Themen 13
Kidao Wie ordne ich die aktuelle Zeit in einer Zeitreihe eine? Allgemeine Java-Themen 6
J zeit stoppen Allgemeine Java-Themen 11
M Zeit eines rechners im netzwerk ermitteln Allgemeine Java-Themen 6
B Aktuelle Zeit im Format YYYY-MM-DD HH-MM-SS in Logfile schre Allgemeine Java-Themen 8
C Umrechnung der Zeit Allgemeine Java-Themen 8
B 2 JList instanzen wo nur einer zur selben Zeit selektierbar? Allgemeine Java-Themen 8
I Thread eine bestimmte Zeit zur Ausführung geben Allgemeine Java-Themen 2
P Zeit messen Allgemeine Java-Themen 16
M Zeit läuft rückwärts Allgemeine Java-Themen 3
K Thread Safe Zeit Messung Allgemeine Java-Themen 2
D Programmunterbrechung für eine bestimmte Zeit (Millisikunden Allgemeine Java-Themen 10
K ServerSocket benötigt unmengen an Zeit Allgemeine Java-Themen 7
D Zeit messen Allgemeine Java-Themen 2
G try auf zeit Allgemeine Java-Themen 8
R Garbage Collector rennt die ganze Zeit Allgemeine Java-Themen 7
M Fortschritt: verbleibende Zeit errechen. Allgemeine Java-Themen 2
F Zeit errechnen mit GregorianCalendar Allgemeine Java-Themen 8
F vergangene Zeit berechnen Allgemeine Java-Themen 6
A Unix Zeit Allgemeine Java-Themen 2
D Datum und Zeit - Date, Calendar oder GregorianCalender ? Allgemeine Java-Themen 13
X Parameter bei Start über Batch-Datei übergeben(Tag und Zeit) Allgemeine Java-Themen 3
C Vergangene Zeit seit Anwendungsstart messen Allgemeine Java-Themen 5
T Zeit aufaddieren Allgemeine Java-Themen 3
T zeit in java Allgemeine Java-Themen 4
I Druckerauflösung per JNA ermitteln Allgemeine Java-Themen 3
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
B Dateistart ermitteln Allgemeine Java-Themen 14
MiMa Geldbetrag mit regex ermitteln. Allgemeine Java-Themen 14
S Alle Dateinamen ermitteln Allgemeine Java-Themen 22
S Marker aus String ermitteln Allgemeine Java-Themen 5
B Mail: Nicht vorhandener Empfänger ermitteln Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
J Größe einer CD ermitteln Allgemeine Java-Themen 10
C Ermitteln ob Zeitumstellung war Allgemeine Java-Themen 37
KeexZDeveoper Nächstgelegenden Wert ermitteln Allgemeine Java-Themen 5
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
L Wachstumsordnung der Ausführungszeit ermitteln Allgemeine Java-Themen 7
MiMa MP3 Bitrate ermitteln Allgemeine Java-Themen 7
Aruetiise Interface Position durch JButton ermitteln Allgemeine Java-Themen 5
L Ermitteln der Anzahl an Lösungen von quatratischen Gleichungen (Sieb von Atkin) Allgemeine Java-Themen 1
L Java Version aus Tomcat ermitteln Allgemeine Java-Themen 3
F Content-Disposition ermitteln über URL Allgemeine Java-Themen 2
O MVC - wo Liste der ComboBox-Items ermitteln Allgemeine Java-Themen 3
J ermitteln der Anzahl der Monate Allgemeine Java-Themen 7
F Swing selektierte Komponente ermitteln Allgemeine Java-Themen 4
S Einfache Methode die Groesse eines Objekts zu ermitteln? Allgemeine Java-Themen 12
E Ermitteln einer eindeutigen ID eines Objekts möglich? Allgemeine Java-Themen 17
L Jsp: Vorherige Webseite ermitteln Allgemeine Java-Themen 4
K Annotations der aufrufenden Methode ermitteln Allgemeine Java-Themen 11
S per Mausklick Position ermitteln Allgemeine Java-Themen 8
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
K Datum ermitteln Allgemeine Java-Themen 4
R Array Schnittmenge performant ermitteln Allgemeine Java-Themen 8
M Klassen in vielen Jars ermitteln Allgemeine Java-Themen 2
c_sidi90 Routine zum ermitteln des Standardablageverzeichnisses Allgemeine Java-Themen 2
R Windows ermitteln ob Administratorrechte vorhanden Allgemeine Java-Themen 17
E Java Browser ermitteln? Allgemeine Java-Themen 6
F Pfad der laufenden JAR ermitteln (mit Archivnamen) Allgemeine Java-Themen 2
E Java Version Details ermitteln Allgemeine Java-Themen 5
E Performace/Ausführungszeit von Methoden ermitteln Allgemeine Java-Themen 4
J Anwendungen ermitteln ? Allgemeine Java-Themen 5
Iron Monkey Lautstärkeregelung ermitteln Allgemeine Java-Themen 2
A Reisezeiten ermitteln Allgemeine Java-Themen 9
Z Position/Größe von Windows-Fenstern ermitteln Allgemeine Java-Themen 12
S Konstruktor ermitteln Allgemeine Java-Themen 3
Iron Monkey Anzahl der Monate ermitteln Allgemeine Java-Themen 17
multiholle Aufrufer einer Funktion ermitteln Allgemeine Java-Themen 13
FoolMoon Elegante Möglichkeit die kleinste Zahl zu ermitteln. Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben