Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.javascript > #5460 > unrolled thread

Arbeitszeiten in JavaScript

Started byMaik Koenig <usenetspam@maikkoenig.de>
First post2024-03-16 22:03 +0100
Last post2024-03-18 17:58 +0100
Articles 15 — 5 participants

Back to article view | Back to de.comp.lang.javascript


Contents

  Arbeitszeiten in JavaScript Maik Koenig <usenetspam@maikkoenig.de> - 2024-03-16 22:03 +0100
    Re: Arbeitszeiten in JavaScript "Peter J. Holzer" <hjp-usenet4@hjp.at> - 2024-03-16 23:21 +0100
      Re: Arbeitszeiten in JavaScript Maik Koenig <usenetspam@maikkoenig.de> - 2024-03-17 08:12 +0100
    Re: Arbeitszeiten in JavaScript Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-03-17 09:36 +0100
      Re: Arbeitszeiten in JavaScript Maik Koenig <usenetspam@maikkoenig.de> - 2024-03-17 18:12 +0100
        [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript) Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-03-18 06:36 +0100
          Re: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript) Maik Koenig <usenetspam@maikkoenig.de> - 2024-03-18 07:56 +0100
            Re: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript) Janis Papanagnou <janis_papanagnou+ng@hotmail.com> - 2024-03-19 06:47 +0100
          Re: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript) "Peter J. Holzer" <hjp-usenet4@hjp.at> - 2024-03-18 20:37 +0100
    Re: Arbeitszeiten in JavaScript Stefan Reuther <stefan.news@arcor.de> - 2024-03-17 09:42 +0100
      Re: Arbeitszeiten in JavaScript Maik Koenig <usenetspam@maikkoenig.de> - 2024-03-17 15:10 +0100
        Re: Arbeitszeiten in JavaScript "Peter J. Holzer" <hjp-usenet4@hjp.at> - 2024-03-17 16:42 +0100
          Re: Arbeitszeiten in JavaScript Maik Koenig <usenetspam@maikkoenig.de> - 2024-03-17 18:33 +0100
            Re: Arbeitszeiten in JavaScript Tim Landscheidt <tim@tim-landscheidt.de> - 2024-03-18 08:36 +0000
            Re: Arbeitszeiten in JavaScript Stefan Reuther <stefan.news@arcor.de> - 2024-03-18 17:58 +0100

#5460 — Arbeitszeiten in JavaScript

FromMaik Koenig <usenetspam@maikkoenig.de>
Date2024-03-16 22:03 +0100
SubjectArbeitszeiten in JavaScript
Message-ID<ut54un.io.1@mid.maikkoenig.de>
Servus!

Problemstellung: Es gibt einen Auftrag der unterschiedlich lange dauert
und zu unterschiedlichen Zeitpunkten beginnt. Während bestimmter Zeiten
darf der Auftrag nicht ausgeführt werden, die Ablaufdauer pausiert dann
also und diese "Pausenzeit" verlängert die eigentliche Laufzeit des
Auftrags.

Beispiel: Für laute Arbeiten wurde eine "reale" Dauer von 47 Stunden.
geschätzt. Das soll im Dreischichtbetrieb passieren, wobei die
jeweiligen Schichten feste Pausenzeiten haben in denen natürlich keine
Arbeit gemacht werden kann.

Wie zum Henker kann man jetzt auf die Schnelle mit JavaScript ausrechnen
wann die Arbeit vorraussichtlich abgeschlossen ist?

Momentan behelfe ich mir ziemlich umständlich: Ich stelle erstmal fest,
in welcher Schicht ich mich befinde indem ich die "Jetzt-Zeit" mit den
jeweiligen Start- und Endzeiten der drei Schichten vergleiche. Dann
gucke ich ob ich gerade mitten in einer Pause bin. Dann berechne ich die
restliche Arbeitszeit bis zur nächsten Unterbrechung. Nach einem kurzen
Check ob die Zeit reichen würde um den Job abzuschliessen ziehe ich die
Zeit von der Gesamtarbeitszeit ab und überspringe die Pausenzeit. Dann
wieder gucken ob die Gesamtarbeitszeit bis zur nächsten Unterbrechung
ausreicht um den Job abzuschliessen und so weiter, bis ich dann
irgendwann einen vermutlichen Termin für den Abschluss der Arbeiten habe.

Es funktioniert, aber das sind verdammt viele Zeilen Code um am Ende
"nur" einen Zeitpunkt zu bekommen. Zumal das Rechnen mit Stunden und
Minuten in JavaScript eher suboptimal ist, ich habe Date() inzwischen
wirklich hassen gelernt.

Ich bezweifel dass jemand mit normalem JavaScript eine schnellere
Methode kennt, aber kennt vielleicht jemand eine Bibliothekt mit der
sowas flotter geht? Im Grunde gehts da ja quasi um eine Kalender-Anwendung:

Ein Termin soll X Stunden Gesamtzeit haben aber zu verschiedenen Zeiten
wird der Termin pausiert. Wenn er an einem bestimmten Datum zu einer
bestimmten Uhrzeit beginnt, wann ist der Termin abgeschlossen?

Im Grunde bräuchte es da eine Zeitverwaltung in der man bestimmte Zeiten
"sperren" kann um bei einer vorgegebenen Laufzeit einen Endtermin zu
bekommen. Kennt jemand sowas oder muss ich mit meinem hässlichen
Konstrukt einfach leben?

Greetz,
MK
-- 
Kopp-Verlag-Gläubige, Religionsdeppen, rechte Vollidioten
 und ähnlicher Bio-Abfall werden ohne Hinweis ignoriert!
   triple-negatives NST - das Leben ist ein Arschloch

[toc] | [next] | [standalone]


#5461

From"Peter J. Holzer" <hjp-usenet4@hjp.at>
Date2024-03-16 23:21 +0100
Message-ID<slrnuvc6qn.mcvb.hjp-usenet4@trintignant.hjp.at>
In reply to#5460
On 2024-03-16 21:03, Maik Koenig <usenetspam@maikkoenig.de> wrote:
> Problemstellung: Es gibt einen Auftrag der unterschiedlich lange dauert
> und zu unterschiedlichen Zeitpunkten beginnt. Während bestimmter Zeiten
> darf der Auftrag nicht ausgeführt werden, die Ablaufdauer pausiert dann
> also und diese "Pausenzeit" verlängert die eigentliche Laufzeit des
> Auftrags.
[...]
> Wie zum Henker kann man jetzt auf die Schnelle mit JavaScript ausrechnen
> wann die Arbeit vorraussichtlich abgeschlossen ist?

Alles, was mit Zeitrechung zu tun hat, ist kompliziert. Wenn dann noch
organisatorische Randbedingungen wie Schicht- und Pausenzeiten,
Feiertage, etc. dazukommen, wird es noch komplizierter.


> Momentan behelfe ich mir ziemlich umständlich: Ich stelle erstmal fest,
> in welcher Schicht ich mich befinde indem ich die "Jetzt-Zeit" mit den
> jeweiligen Start- und Endzeiten der drei Schichten vergleiche. Dann
> gucke ich ob ich gerade mitten in einer Pause bin. Dann berechne ich die
> restliche Arbeitszeit bis zur nächsten Unterbrechung. Nach einem kurzen
> Check ob die Zeit reichen würde um den Job abzuschliessen ziehe ich die
> Zeit von der Gesamtarbeitszeit ab und überspringe die Pausenzeit. Dann
> wieder gucken ob die Gesamtarbeitszeit bis zur nächsten Unterbrechung
> ausreicht um den Job abzuschliessen und so weiter, bis ich dann
> irgendwann einen vermutlichen Termin für den Abschluss der Arbeiten habe.
>
> Es funktioniert, aber das sind verdammt viele Zeilen Code um am Ende
> "nur" einen Zeitpunkt zu bekommen.

Ich fürchte, es geht nicht besser.

> Zumal das Rechnen mit Stunden und Minuten in JavaScript eher
> suboptimal ist, ich habe Date() inzwischen wirklich hassen gelernt.

Das verstehe ich. JavaScript ist da wirklich nicht sehr komfortabel
(aber wo ist JavaScript schon komfortabel?). Python ist da schon besser
(aber auch zu simpel), am wenigsten schlecht dünkt mich PostgreSQL (aber
selbst als bekennender SQL-Fan will ich nicht ganze Applikationen in SQL
schreiben).

> Ich bezweifel dass jemand mit normalem JavaScript eine schnellere
> Methode kennt, aber kennt vielleicht jemand eine Bibliothekt mit der
> sowas flotter geht? Im Grunde gehts da ja quasi um eine Kalender-Anwendung:

Ja, aber mit sehr spezifischen Regeln. Eine gute Projektplanung sollte
das können, aber deren Zeitberechnung ist wahrscheinlich nicht aus dem
Gesamtpaket herauslösbar. Andererseits findet man auf npm alles, also
vielleicht auch das (wahrscheinlicher aber 3 Dutzend Pakete, die fast,
aber nicht genau das machen, was du brauchst).

        hp

[toc] | [prev] | [next] | [standalone]


#5462

FromMaik Koenig <usenetspam@maikkoenig.de>
Date2024-03-17 08:12 +0100
Message-ID<ut68le.bvk.1@mid.maikkoenig.de>
In reply to#5461
Am 16.03.2024 um 23:21 schrieb Peter J. Holzer:
> On 2024-03-16 21:03, Maik Koenig <usenetspam@maikkoenig.de> wrote:

>> Es funktioniert, aber das sind verdammt viele Zeilen Code um am Ende
>> "nur" einen Zeitpunkt zu bekommen.
> 
> Ich fürchte, es geht nicht besser.

Das hatte ich mir schon gedacht ;( Trotzdem danke.

Greetz,
MK
-- 
Kopp-Verlag-Gläubige, Religionsdeppen, rechte Vollidioten
 und ähnlicher Bio-Abfall werden ohne Hinweis ignoriert!
   triple-negatives NST - das Leben ist ein Arschloch

[toc] | [prev] | [next] | [standalone]


#5463

FromJanis Papanagnou <janis_papanagnou+ng@hotmail.com>
Date2024-03-17 09:36 +0100
Message-ID<ut6a36$3e90k$1@dont-email.me>
In reply to#5460
On 16.03.2024 22:03, Maik Koenig wrote:
> Servus!

Griaß di!

> 
> Problemstellung: Es gibt einen Auftrag der unterschiedlich lange dauert
> und zu unterschiedlichen Zeitpunkten beginnt. [...]

(Das macht man normalerweise mit Projektmanagement(PM)-Werkzeugen.[*])

> 
> Wie zum Henker kann man jetzt auf die Schnelle mit JavaScript ausrechnen
> wann die Arbeit vorraussichtlich abgeschlossen ist?

"voraussichtlich"? - Wenn es nicht um exakte Zeiten geht könnte man
das mit Aufwand/Ressourcen/Nettozeit(also abzgl. Pausen) bestimmen.

> 
> Momentan behelfe ich mir ziemlich umständlich: [...]
> 
> Es funktioniert, aber das sind verdammt viele Zeilen Code um am Ende
> "nur" einen Zeitpunkt zu bekommen. Zumal das Rechnen mit Stunden und
> Minuten in JavaScript eher suboptimal ist, ich habe Date() inzwischen
> wirklich hassen gelernt.

Wenn du viel mit Zeiten operierst und das schlechte Interface von JS
nicht magst, dann würde ich eine eigene Zeit/Datum-Funktionsbibliothek
schreiben, die das JS kapselt, und sinnvollere Funktionen anbietet.
(Es muss keine komplette Bibliothek sein, nur die von dir benötigten
Funktionen in einer geeigneteren Form anbieten.)

> 
> Ich bezweifel dass jemand mit normalem JavaScript eine schnellere
> Methode kennt, aber kennt vielleicht jemand eine Bibliothekt mit der
> sowas flotter geht? Im Grunde gehts da ja quasi um eine Kalender-Anwendung:

Mehr als das; es geht um PM (s.o.). Zeit (Kalender) ist nur ein Faktor.

> 
> Ein Termin soll X Stunden Gesamtzeit haben aber zu verschiedenen Zeiten
> wird der Termin pausiert. Wenn er an einem bestimmten Datum zu einer
> bestimmten Uhrzeit beginnt, wann ist der Termin abgeschlossen?
> 
> Im Grunde bräuchte es da eine Zeitverwaltung in der man bestimmte Zeiten
> "sperren" kann um bei einer vorgegebenen Laufzeit einen Endtermin zu
> bekommen. Kennt jemand sowas oder muss ich mit meinem hässlichen
> Konstrukt einfach leben?
> 
> Greetz,
> MK
> 

Pfiat di,

Janis

[*] z.B. MS Project (oder Besseres), je nach Plattform. Falls du Linux
benutzt, gibt es freie Werkzeuge.

[toc] | [prev] | [next] | [standalone]


#5467

FromMaik Koenig <usenetspam@maikkoenig.de>
Date2024-03-17 18:12 +0100
Message-ID<ut7bqv.73k.1@mid.maikkoenig.de>
In reply to#5463
Am 17.03.2024 um 09:36 schrieb Janis Papanagnou:
> On 16.03.2024 22:03, Maik Koenig wrote:
>> Servus!
> 
> Griaß di!
> 
>> 
>> Problemstellung: Es gibt einen Auftrag der unterschiedlich lange dauert
>> und zu unterschiedlichen Zeitpunkten beginnt. [...]
> 
> (Das macht man normalerweise mit Projektmanagement(PM)-Werkzeugen.[*])

Ja. Normaler Weise kann man sich solche Software einfach installieren
und fertig. Aber nur wenn die IT-Abteilung des Arbeitgebers da mitspielt
was sie hier nicht macht, was ich in dem speziellen Fall nachvollziehen
kann. Man kann die Rechnung "von Hand" machen, das ist nicht überaus
kompliziert nur lästig und unnötig zeitraubend.

Es ist halt einfacher wenn man ein Formular hat in welches man die
Rahmenbedingungen eingibt und das Ergebnis kommt per Mausklick. Ich habe
die Rahmenbedingungen drastisch vereinfacht dargestellt da sie hier
schlicht nicht von Bedeutung sind, aber alleine die Berechnung der Dauer
ohne Unterbrechungen ist schon umständlich und kann mittels
Taschenrechner schonmal locker 30 Minuten dauern. Das kann eine
PM-Software bestimmt auch, aber wozu für diese eine Aufgabe viel Geld
ausgeben wenn es ein simples HTML-Formular auch tut?

Meine Lösung funktioniert ja, sie ist nur vergleichsweise umständlich
programmiert weil mir schlicht die Erfahrung und das Wissen für
Vereinfachungen fehlt.

Der Vorteil meiner Lösung ist halt, dass sie überall funktioniert. Jedes
Smartphone kann das HTML-Dokument öffnen und die Berechnung vornehmen.


Greetz,
MK
-- 
Kopp-Verlag-Gläubige, Religionsdeppen, rechte Vollidioten
 und ähnlicher Bio-Abfall werden ohne Hinweis ignoriert!
   triple-negatives NST - das Leben ist ein Arschloch

[toc] | [prev] | [next] | [standalone]


#5469 — [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)

FromJanis Papanagnou <janis_papanagnou+ng@hotmail.com>
Date2024-03-18 06:36 +0100
Subject[OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)
Message-ID<ut8jti$15l3$1@dont-email.me>
In reply to#5467
On 17.03.2024 18:12, Maik Koenig wrote:
> Am 17.03.2024 um 09:36 schrieb Janis Papanagnou:
>> On 16.03.2024 22:03, Maik Koenig wrote:
>>>
>>> Problemstellung: Es gibt einen Auftrag der unterschiedlich lange dauert
>>> und zu unterschiedlichen Zeitpunkten beginnt. [...]
>>
>> (Das macht man normalerweise mit Projektmanagement(PM)-Werkzeugen.[*])
> 
> Ja. Normaler Weise kann man sich solche Software einfach installieren
> und fertig. Aber nur wenn die IT-Abteilung des Arbeitgebers da mitspielt
> was sie hier nicht macht, was ich in dem speziellen Fall nachvollziehen
> kann. Man kann die Rechnung "von Hand" machen, das ist nicht überaus
> kompliziert nur lästig und unnötig zeitraubend.

Es ist eine Entscheidung, die das Unternehmen machen muss. Wenn die
Leitungsebene das nicht sieht oder meint, man braucht das nicht, dann
kann das im spezifischen Unternehmenskontext richtig oder falsch sein.

> 
> Es ist halt einfacher wenn man ein Formular hat in welches man die
> Rahmenbedingungen eingibt und das Ergebnis kommt per Mausklick.

Genau. Es ist allerdings selten eine richtige Entscheidung, so etwas
selbst "neu zu erfinden", anstatt ein bestehendes Produkt zu nutzen,
bei dem man mit einem Minimum an Qualität und Funktionsumfang rechnen
kann.

> Ich habe
> die Rahmenbedingungen drastisch vereinfacht dargestellt da sie hier
> schlicht nicht von Bedeutung sind, aber alleine die Berechnung der Dauer
> ohne Unterbrechungen ist schon umständlich und kann mittels
> Taschenrechner schonmal locker 30 Minuten dauern. Das kann eine
> PM-Software bestimmt auch, aber wozu für diese eine Aufgabe viel Geld
> ausgeben wenn es ein simples HTML-Formular auch tut?

Das ist genau das, was ein Business Case ermitteln sollte, z.B. ob
sich eine Eigenentwicklung rechnet (Entwicklung, Fehlersuche, etc.).
Und wie ich schon sagte gibt es solche Tools auch frei verfügbar,
muss also nicht "viel Geld" kosten. Allerdings sind in beiden Fällen
die Betriebs- und Wartungskosten der Software zu berücksichtigen.

> 
> Meine Lösung funktioniert ja, sie ist nur vergleichsweise umständlich
> programmiert weil mir schlicht die Erfahrung und das Wissen für
> Vereinfachungen fehlt.

Erfahrungsgemäß, wenn man solch eine Lösung für ein Funktionsdetail
mal realisiert oder angeschafft hat, steigen in Folge die Bedürfnisse,
was man in dieser Richtung noch alles machen könnte. Irgendwann wird
sich dann die Frage stellen, ob man das eigene Tool immer weiter
entwickeln kann und will (Zeitaufwand/Kosten/Zuverlässigkeit) oder
doch einfach ein bestehendes, direkt einsetzbares Werkzeug anschafft,
das das gesamte Funktionsfeld abdeckt.

> 
> Der Vorteil meiner Lösung ist halt, dass sie überall funktioniert. Jedes
> Smartphone kann das HTML-Dokument öffnen und die Berechnung vornehmen.

Ist das denn eine Funktion, die "jedermann" nutzen können soll? Ich
hatte den Eindruck, es soll zur Management-Planung eingesetzt werden,
also von einem Planungsmenschen (einen Projektmanager) durchgeführt.

Viel Glück!

Servus,
Janis

[toc] | [prev] | [next] | [standalone]


#5470 — Re: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)

FromMaik Koenig <usenetspam@maikkoenig.de>
Date2024-03-18 07:56 +0100
SubjectRe: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)
Message-ID<ut8s30.a70.1@mid.maikkoenig.de>
In reply to#5469
Am 18.03.2024 um 06:36 schrieb Janis Papanagnou:

[jede Menge OT-Fragen]

Das können wir gerne per Mail diskutieren, hier ist das komplett OffTopic.

Greetz,
MK
-- 
Kopp-Verlag-Gläubige, Religionsdeppen, rechte Vollidioten
 und ähnlicher Bio-Abfall werden ohne Hinweis ignoriert!
   triple-negatives NST - das Leben ist ein Arschloch

[toc] | [prev] | [next] | [standalone]


#5474 — Re: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)

FromJanis Papanagnou <janis_papanagnou+ng@hotmail.com>
Date2024-03-19 06:47 +0100
SubjectRe: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)
Message-ID<utb8ss$m1r5$1@dont-email.me>
In reply to#5470
On 18.03.2024 07:56, Maik Koenig wrote:
> Am 18.03.2024 um 06:36 schrieb Janis Papanagnou:
> 
> [jede Menge OT-Fragen]
> 
> Das können wir gerne per Mail diskutieren, hier ist das komplett OffTopic.

Was denkst du, warum ich den Subthread als [OT] klassifiziert
hatte?! Es steht dir - wie jedem anderen - frei, [OT] Posts einfach
zu überspringen. - Und nein, ich will das mit dir nicht diskutieren;
ich habe im Post nur ein paar Jahrzehnte professionelle Erfahrung
zum Thema geteilt. Alles Weitere liegt am Leser...

> 
> Greetz,
> MK
> 

[toc] | [prev] | [next] | [standalone]


#5473 — Re: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)

From"Peter J. Holzer" <hjp-usenet4@hjp.at>
Date2024-03-18 20:37 +0100
SubjectRe: [OT] Eigenentwicklung vs. Produkt (war Re: Arbeitszeiten in JavaScript)
Message-ID<slrnuvh5vn.vdue.hjp-usenet4@trintignant.hjp.at>
In reply to#5469
[Umleitung wegen Maiks Wink mit dem Zaunpfahl ;-)]

On 2024-03-18 05:36, Janis Papanagnou <janis_papanagnou+ng@hotmail.com> wrote:
> On 17.03.2024 18:12, Maik Koenig wrote:
>> Ja. Normaler Weise kann man sich solche Software einfach installieren
>> und fertig. Aber nur wenn die IT-Abteilung des Arbeitgebers da mitspielt
>> was sie hier nicht macht, was ich in dem speziellen Fall nachvollziehen
>> kann. Man kann die Rechnung "von Hand" machen, das ist nicht überaus
>> kompliziert nur lästig und unnötig zeitraubend.
>
> Es ist eine Entscheidung, die das Unternehmen machen muss. Wenn die
> Leitungsebene das nicht sieht oder meint, man braucht das nicht, dann
> kann das im spezifischen Unternehmenskontext richtig oder falsch sein.
>
>> 
>> Es ist halt einfacher wenn man ein Formular hat in welches man die
>> Rahmenbedingungen eingibt und das Ergebnis kommt per Mausklick.
>
> Genau. Es ist allerdings selten eine richtige Entscheidung, so etwas
> selbst "neu zu erfinden", anstatt ein bestehendes Produkt zu nutzen,
> bei dem man mit einem Minimum an Qualität und Funktionsumfang rechnen
> kann.

Mit Betonung auf "Minimum". Betriebliche Software ist meiner
(glücklicherweise nicht besonders umfangreichen) Erfahrung nach
unglaublich schlecht.

Wann immer wir vor der Wahl Kaufen oder Selberschreiben standen und mit
dem Argument "das gibt es ja fertig, da haben wir keinen Aufwand" für
einen Kauf entschieden wurde, war das erstens schon einiges an Aufwand,
das am wenigsten schlechte Produkt zu finden, dieses dann anpassen zu
lassen (solche Software ist offenbar nie "schlüsselfertig") und Daten zu
migrieren, und zweitens war mit dem Ergebnis auch keiner zufrieden (aber
immerhin waren dann nicht wir Entwickler schuld, das ist auch was wert ;-)).

        hp

[toc] | [prev] | [next] | [standalone]


#5464

FromStefan Reuther <stefan.news@arcor.de>
Date2024-03-17 09:42 +0100
Message-ID<ut6du8.5a4.1@stefan.msgid.phost.de>
In reply to#5460
Am 16.03.2024 um 22:03 schrieb Maik Koenig:
> Momentan behelfe ich mir ziemlich umständlich: Ich stelle erstmal fest,
> in welcher Schicht ich mich befinde indem ich die "Jetzt-Zeit" mit den
> jeweiligen Start- und Endzeiten der drei Schichten vergleiche. Dann
> gucke ich ob ich gerade mitten in einer Pause bin. Dann berechne ich die
> restliche Arbeitszeit bis zur nächsten Unterbrechung. Nach einem kurzen
> Check ob die Zeit reichen würde um den Job abzuschliessen ziehe ich die
> Zeit von der Gesamtarbeitszeit ab und überspringe die Pausenzeit. Dann
> wieder gucken ob die Gesamtarbeitszeit bis zur nächsten Unterbrechung
> ausreicht um den Job abzuschliessen und so weiter, bis ich dann
> irgendwann einen vermutlichen Termin für den Abschluss der Arbeiten habe.
> 
> Es funktioniert, aber das sind verdammt viele Zeilen Code um am Ende
> "nur" einen Zeitpunkt zu bekommen. Zumal das Rechnen mit Stunden und
> Minuten in JavaScript eher suboptimal ist, ich habe Date() inzwischen
> wirklich hassen gelernt.

Um die Logik wie beschrieben wirst du nicht herumkommen, aber eventuell
kann man es kleverer aufschreiben.

Zuerst würde ich über die Datums-Repräsentation nachdenken. Brauchst du
wirklich ein Datum in der realen Welt oder reicht ein einfacher Wert wie
z.B. "Zeit seit <Zeitpunkt>" (Mitternacht, Montag Mitternacht,
1.1.1970), ausgedrückt in Sekunden oder Minuten? Wenn du mit Zahlen
statt Date()-Objekten rechnen kannst, wird es einfacher.

Angenommen, die Zeit wird repräsentiert als "Minuten seit Mitternacht an
<Tag>", dann wird eine Funktion zur Klassifizierung sowas wie

   var TIMES = [6*60, 6*60+30,         // Pause von 6:00 bis 6:30
                12*60, 13*60,          // Pause von 12:00 bis 13:00
                18*60, 18*60+30];      // Pause von 18:00 bis 18:30
   function classify(t) {
     var mins = t % 24*60;                 // Minuten seit Mitternacht
     for (var i = 0; i < TIMES.length; ++i) {
       if (mins < TIMES[i]) {
         return { isPause: i%2, duration: TIMES[i] - t };
       }
     }
     return { isPause: 0, duration: 24*60-t }; // Arbeit bis Mitternacht
   }

und die Berechnung sowas wie

   function completionTime(t, work) {
     while (work > 0) {
       var k = classify(t);
       if (!k.isPause) {         // wenn keine Pause, verrichte Arbeit
         var now = Math.min(work, k.duration);
         work -= now;
         t += now;
       } else {
         t += k.duration;        // Pause, einfach nur Zeit weitersetzen
       }
     }
     return t;
   }

(Disclaimer: ungetestet runtergeschrieben)

Das halte ich jetzt für recht übersichtlich. In Date() umrechnen muss
man dann nur für die Ein-/Ausgabe.

Sommerzeit und Feiertage wären in der classify()-Funktion zu
berücksichtigen, das sollte aber relativ einfach handhabbar sein. Falls
du auf irgendwelche Magie in Date() gehofft hast, die mit Schaltsekunden
umgeht: gibt's nicht. Aber damit kann man dann eben auch z.B. den
Wochentag bekommen mit '(t / (24*60)) % 7'.


  Stefan

[toc] | [prev] | [next] | [standalone]


#5465

FromMaik Koenig <usenetspam@maikkoenig.de>
Date2024-03-17 15:10 +0100
Message-ID<ut714d.9oc.1@mid.maikkoenig.de>
In reply to#5464
Am 17.03.2024 um 09:42 schrieb Stefan Reuther:

> Das halte ich jetzt für recht übersichtlich. In Date() umrechnen muss
> man dann nur für die Ein-/Ausgabe.

Um ehrlich zu sein verstehe ich deinen Code nur zum Teil. Was ihn für
mich natürlich komplett unübersichtlich macht :). Ich bin weder
Mathematiker noch Informatiker, ich mache das als Hobby "nebenbei". Was
letztlich heisst dass mein Code zwar funktioniert aber meistens ausufert
da ich Abkürzungen schlicht nicht kenne. Das ist für meinen Bedarf auch
nicht weiter schlimm, stört aber natürlich wenn ich Lösungen von anderen
verstehen will. Ich muss mich damit (deinem Code) mal intensiver
beschäftigen, einstweilen mal ein Danke.

> Sommerzeit und Feiertage wären in der classify()-Funktion zu
> berücksichtigen, das sollte aber relativ einfach handhabbar sein. Falls
> du auf irgendwelche Magie in Date() gehofft hast, die mit Schaltsekunden
> umgeht: gibt's nicht. Aber damit kann man dann eben auch z.B. den
> Wochentag bekommen mit '(t / (24*60)) % 7'.

Sommerzeit, Schaltsekunde, Feiertage etc sind in dem Fall irrelevant. Es
geht um eine Abschätzung wann geplante Arbeit abgeschlossen sein wird.
Wenn man die Daten Ende März eingibt und als Ergebnis kommt Karfreitag
raus, dann ist dem Nutzer klar dass dann der Dienstag nach Ostern das
Ziel ist.

Greetz,
MK
-- 
Kopp-Verlag-Gläubige, Religionsdeppen, rechte Vollidioten
 und ähnlicher Bio-Abfall werden ohne Hinweis ignoriert!
   triple-negatives NST - das Leben ist ein Arschloch

[toc] | [prev] | [next] | [standalone]


#5466

From"Peter J. Holzer" <hjp-usenet4@hjp.at>
Date2024-03-17 16:42 +0100
Message-ID<slrnuve3qe.p1dr.hjp-usenet4@trintignant.hjp.at>
In reply to#5465
On 2024-03-17 14:10, Maik Koenig <usenetspam@maikkoenig.de> wrote:
> Sommerzeit, Schaltsekunde, Feiertage etc sind in dem Fall irrelevant.
> Es geht um eine Abschätzung wann geplante Arbeit abgeschlossen sein
> wird.

Ohne Eure Arbeitsabläufe im Detail zu kennen, scheint mir, dass Du du
dann die Pausenbehandlung vereinfachen kannst. Statt 3 Schichten, die
z.B. aus 4 Stunden Arbeit, 0.5 Stunden Pause, 3.5 Stunden Arbeit
bestehen, hast Du 3 Schichten zu je 7.5 Stunden.

(Das geht natürlich nicht, wenn da Arbeitsschritte drin sind, die
längere Zeit dauern und nicht unterbrochen werden können. Wenn so ein
Schritt 2 Stunden dauert, kann man ihn nicht eine Stunde vor einer Pause
oder dem Ende der Schicht beginnen. Ist aber für eine Abschätzung
vielleicht irrelevant).

        hp

[toc] | [prev] | [next] | [standalone]


#5468

FromMaik Koenig <usenetspam@maikkoenig.de>
Date2024-03-17 18:33 +0100
Message-ID<ut7d25.5oc.1@mid.maikkoenig.de>
In reply to#5466
Am 17.03.2024 um 16:42 schrieb Peter J. Holzer:
> On 2024-03-17 14:10, Maik Koenig <usenetspam@maikkoenig.de> wrote:
>> Sommerzeit, Schaltsekunde, Feiertage etc sind in dem Fall irrelevant.
>> Es geht um eine Abschätzung wann geplante Arbeit abgeschlossen sein
>> wird.
> 
> Ohne Eure Arbeitsabläufe im Detail zu kennen, scheint mir, dass Du du
> dann die Pausenbehandlung vereinfachen kannst. Statt 3 Schichten, die
> z.B. aus 4 Stunden Arbeit, 0.5 Stunden Pause, 3.5 Stunden Arbeit
> bestehen, hast Du 3 Schichten zu je 7.5 Stunden.

Jetzt wo ich das lese... natürlich. Man muss dann nur am Anfang gucken
wo man "jetzt" ist um die Restzeit der aktuellen Schicht zu kennen. Ab
dann kann man einfach 8 Stunden pro Schicht weiter rechnen und von der
"Arbeitszeit" 7,5 Std abziehen. Bis weniger als 7.5 Stunden Restzeit
übrig sind, dann müsste man wieder gucken ob man vor oder nach den
Pausen landet.

Autsch, das hätte ich auch selbst sehen können. Danke für den Tritt! Das
reduziert meinen Code drastisch.

> (Das geht natürlich nicht, wenn da Arbeitsschritte drin sind, die
> längere Zeit dauern und nicht unterbrochen werden können. Wenn so ein
> Schritt 2 Stunden dauert, kann man ihn nicht eine Stunde vor einer Pause
> oder dem Ende der Schicht beginnen. Ist aber für eine Abschätzung
> vielleicht irrelevant).

Da gehts nicht um eine auf die Minute genaue Rechnung, die wäre sowieso
unrealistisch. Es geht mehr darum heraus zu finden ob man z.B. eine
Zusatzschicht einplanen muss um den Termin einzuhalten. Oder ob man die
Arbeiter vielleicht mal am Freitag in der Spätschicht früher nach Hause
schicken kann.

Greetz,
MK
-- 
Kopp-Verlag-Gläubige, Religionsdeppen, rechte Vollidioten
 und ähnlicher Bio-Abfall werden ohne Hinweis ignoriert!
   triple-negatives NST - das Leben ist ein Arschloch

[toc] | [prev] | [next] | [standalone]


#5471

FromTim Landscheidt <tim@tim-landscheidt.de>
Date2024-03-18 08:36 +0000
Message-ID<87wmq0vsw6.fsf@vagabond.tim-landscheidt.de>
In reply to#5468
Maik Koenig <usenetspam@maikkoenig.de> wrote:

> […]

>> (Das geht natürlich nicht, wenn da Arbeitsschritte drin sind, die
>> längere Zeit dauern und nicht unterbrochen werden können. Wenn so ein
>> Schritt 2 Stunden dauert, kann man ihn nicht eine Stunde vor einer Pause
>> oder dem Ende der Schicht beginnen. Ist aber für eine Abschätzung
>> vielleicht irrelevant).

> Da gehts nicht um eine auf die Minute genaue Rechnung, die wäre sowieso
> unrealistisch. Es geht mehr darum heraus zu finden ob man z.B. eine
> Zusatzschicht einplanen muss um den Termin einzuhalten. Oder ob man die
> Arbeiter vielleicht mal am Freitag in der Spätschicht früher nach Hause
> schicken kann.

Bei einer meinetwegen „nur“ stundengenauen Planung muss man
aber auch Ausfallzeiten von Mensch und Maschine berücksich-
tigen, mehrere parallele Aufträge, die sich gegenseitig aus-
schließen, etc. Da kommt man dann um „richtige“ Software
nicht herum.

Wenn die Verantwortung eh bei einem Menschen liegt, der das
nachher abzeichnet, wird es aber meistens reichen (und die
Nerven schonen) zu sagen, aus Erfahrung schaffen wir sechs
Stunden/Arbeitstag, ein 47-Stunden-Auftrag ist dann in acht
Arbeitstagen abgearbeitet, zusätzlich noch einen für Unvor-
hergesehenes, und wenn es schneller geht, freuen sich alle.

Tim

[toc] | [prev] | [next] | [standalone]


#5472

FromStefan Reuther <stefan.news@arcor.de>
Date2024-03-18 17:58 +0100
Message-ID<ut9vbh.440.1@stefan.msgid.phost.de>
In reply to#5468
Am 17.03.2024 um 18:33 schrieb Maik Koenig:
> Am 17.03.2024 um 16:42 schrieb Peter J. Holzer:
>> On 2024-03-17 14:10, Maik Koenig <usenetspam@maikkoenig.de> wrote:
>>> Sommerzeit, Schaltsekunde, Feiertage etc sind in dem Fall irrelevant.
>>> Es geht um eine Abschätzung wann geplante Arbeit abgeschlossen sein
>>> wird.
>>
>> Ohne Eure Arbeitsabläufe im Detail zu kennen, scheint mir, dass Du du
>> dann die Pausenbehandlung vereinfachen kannst. Statt 3 Schichten, die
>> z.B. aus 4 Stunden Arbeit, 0.5 Stunden Pause, 3.5 Stunden Arbeit
>> bestehen, hast Du 3 Schichten zu je 7.5 Stunden.
> 
> Jetzt wo ich das lese... natürlich. Man muss dann nur am Anfang gucken
> wo man "jetzt" ist um die Restzeit der aktuellen Schicht zu kennen. Ab
> dann kann man einfach 8 Stunden pro Schicht weiter rechnen und von der
> "Arbeitszeit" 7,5 Std abziehen. Bis weniger als 7.5 Stunden Restzeit
> übrig sind, dann müsste man wieder gucken ob man vor oder nach den
> Pausen landet.

In etwa das soll mein Code tun, nur eben aufgeschrieben mit "Minuten
seit <Zeit>" als Zahl, statt mit Date-Objekten: die classify-Funktion
sagt, ob wir in einer Pause sind oder nicht, und wenn nicht, wird
entsprechend viel Arbeit abgezählt.

>> (Das geht natürlich nicht, wenn da Arbeitsschritte drin sind, die
>> längere Zeit dauern und nicht unterbrochen werden können. Wenn so ein
>> Schritt 2 Stunden dauert, kann man ihn nicht eine Stunde vor einer Pause
>> oder dem Ende der Schicht beginnen. Ist aber für eine Abschätzung
>> vielleicht irrelevant).
> 
> Da gehts nicht um eine auf die Minute genaue Rechnung, die wäre sowieso
> unrealistisch. Es geht mehr darum heraus zu finden ob man z.B. eine
> Zusatzschicht einplanen muss um den Termin einzuhalten. Oder ob man die
> Arbeiter vielleicht mal am Freitag in der Spätschicht früher nach Hause
> schicken kann.

Wobei da die Frage ist, ob du dafür wirklich die Pausen genau berechnen
musst, oder ob da einfach reicht "eine 8-Stunden-Schicht verrichtet 6
Stunden Arbeit".

Es kommt ja auch mal was dazwischen (Maschine springt nicht an,
Ausschuss produziert, Mitarbeiter sitzt öfter auf dem Keramik als
geplant, etc.), so dass ich wegen "10 Projekte werden voraussichtlich
Freitags um 16:28 fertig" jetzt nicht der Spätschicht komplett freigeben
würde. Und wenn die wider erwarten alle 14:00 fertig sind, können sie
Überstunden abbauen oder Unterweisungen durchführen.

Aber ich bin kein Schichtplaner, nur Entwickler. Heißt: ich kenne die
Industrie-Best-Practice der Schichtplaner nicht. Heißt aber auch: ich
kann oftmals erst Freitag 15:30 abschätzen, ob das ein pünktlicher
Feierabend, eine Überstunde oder eine Extraschicht wird.


  Stefan

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.javascript


csiph-web