Autor Thema: Differenz zwischen zwei Zeitfeldern ohne Wochenende/Feiertage IN STUNDEN  (Gelesen 3943 mal)

Offline Caleb666

  • Junior Mitglied
  • **
  • Beiträge: 76
Guten Morgen,

ich möchte gerne die Differenz zwischen zwei Zeit-/Datumsfeldern ohne Wochenende und Feiertage in Formeldsprache berechnen, jedoch
nicht in Tagen wie z.B. über @BusinessDays sondern in Stunden, da ich als Ergebnis mit Stundenwerten weiterarbeiten möchte (wie z.B. Bearbeitung erfolgte innerhalb 24-72h, etc.

Wie könnte ich das lösen?
Gibt es hierfür auch eine einfache Funktion in Formelsprache?

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Warum multiplizierst Du die Tage bei @BusinessDays nicht einfach mit der Anzahl der Arbeitsstunden?
Andy

Offline Caleb666

  • Junior Mitglied
  • **
  • Beiträge: 76
Da es mir nicht um die Anzahl der Arbeitsstunden geht, sondern um die tatsächliche Differenz zwischen den zwei Zeitwerten, aber ohne Wochenende.
« Letzte Änderung: 09.01.20 - 11:39:07 von Caleb666 »

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
Also mit dem Multiplikator 24?
Andy

Offline Caleb666

  • Junior Mitglied
  • **
  • Beiträge: 76
Also wenn z.B. eine Anfrage um 15:30 rein kommt und 48h für die Bearbeitung zur Verfügung stehen, möchte ich gerne prüfen können, ob dieses Zeitfenster überschritten wurde.
« Letzte Änderung: 09.01.20 - 11:49:16 von Caleb666 »

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
multipliziere die Anzahl der Businessdays mit 24 und ziehe von dem Ergebnis die Differenz zwischen 15:30 und 24:00 ab
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Bastel123

  • Senior Mitglied
  • ****
  • Beiträge: 355
  • Geschlecht: Männlich
Ich würde beim Anlegen des Dokumentes das maximale Enddatum berechnen und reinschreiben.

Dann kannst Du einfach mit größer oder kleiner arbeiten.
Gruß Sebastian
-----------------------------------------------------
Kaum macht man's richtig, schon funktioniert's.

Offline Caleb666

  • Junior Mitglied
  • **
  • Beiträge: 76
Stimmt, wenn ich es gleich bei der Anlage berechne, tue ich mich leichter.
Vielen Dank an alle für die tollen Lösungsansätze!!!

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
In dem Fall würde ich dann eher mit @Weekday und @Adjust arbeiten.
Das ist dann später einfacher für samstags und sonntags zu erweitern.
Außerdem sieht die Formel dann übersichtlicher aus.

In etwa so:
Code
_weekday := @Weekday(@Created);
_adjust := @If(
	_weekday = 1; 3;
	_weekday = 2; 2;
	_weekday = 3; 2;
	_weekday = 4; 2;
	4);
@Adjust(@Created; 0; 0; _adjust; 0; 0; 0)

Feiertage berücksichtigt das natürlich nicht!
« Letzte Änderung: 09.01.20 - 13:18:04 von Andrew Harder »
Andy

Offline Bastel123

  • Senior Mitglied
  • ****
  • Beiträge: 355
  • Geschlecht: Männlich
Außerdem würde ich ein Feld einführen im dem steht, ob die Zeit überschritten wurde oder nicht.
Dieses Feld wird durch einen periodischen Agenten gesetzt.

Dann brauchst Du keine Ansichten mit @now im Vergleich und kannst auch leichter Auswertungen programmieren.
Gruß Sebastian
-----------------------------------------------------
Kaum macht man's richtig, schon funktioniert's.

Offline Caleb666

  • Junior Mitglied
  • **
  • Beiträge: 76
Für neue Dokumente werden ich den Ansatz von "bastel123" verwenden und das Enddatum der Bearbeitung gleich mit setzen und die spätere Abfrage mittels eines Agenten laufen lassen.

Für bestehende Dokumente tue mich mich gerade noch etwas schwer.
Habe ja ein Anfangs- und Bearbeitungsdatum mit Uhrzeit.

Um erst mal die Anzahl an Stunden für den ganzen Tag zu erhalten (unter Berücksichtigung des Wochenendes) muss ich ja mittels @BusinessDays das Ergebnis mit 24 multiplizieren.

Im Anschluss ziehe ich zum einen die Differenz zwischen den bereits vergangenen Stunden des Anfangsdatums von 24h ab
und zu anderen die Differenz zwischen den bereits vergangenen Stunden des Enddatums von 24h ab.

Code
@BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage])*24 - ( 24 -@Hour(Eingang)) - (24 -@Hour(Bearbeitung)) 

Irgendwo hab ich jedoch einen Denkfehler, da die Ergebnisse nur teilweise passen... ??? ???


Offline HH

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
Ich gehe davon aus, dass Eingang und Bearbeitung weder Wochenendtage noch Feiertage sind.

Code
_freieZeitInSekunden := (@BusinessDays(Eingang; Bearbeitung ) - @BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage]) )  *24*60*60 ;
_arbeitszeitInSekunden := Bearbeitung - Eingang - _freieZeitInSekunden ;

Daraus dann die Stunden zu ermitteln sollte machbar sein.

Dein code, wie folgt geändert

Code
@BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage])*24 - ( 24 -@Hour(Eingang)) - @Hour(Bearbeitung)

dürfte auch funktionieren (ist allerdings ungenauer).

Gruß
Hubert
« Letzte Änderung: 09.01.20 - 20:59:43 von HH »

Offline Caleb666

  • Junior Mitglied
  • **
  • Beiträge: 76
Danke, der Code
Code
_freieZeitInSekunden := (@BusinessDays(Eingang; Bearbeitung ) - @BusinessDays(Eingang; Bearbeitung; 1:7;[Feiertage]) )  *24*60*60 ;
_arbeitszeitInSekunden := Bearbeitung - Eingang - _freieZeitInSekunden ;

funktioniert wunderbar!!!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz