# Uhrzeit ggf. ab / aufrunden



## 》Anfänger《 (24. Apr 2020)

Hallo,

ich bin Monteur und wir füllen täglich Stundenzettel aus (Kundendienst) Zeitangaben von/bis Uhr.
Das die Aktuelle Zeit eingetragen wird hab ich schon erfast mit 
Aktuelle Uhrzeit


Spoiler



var f = this.getField("time_1"); 
f.value = util.printd("HH:MM", new Date());



Da wir nicht exakt auf 1 Minute abrechnen, wäre es von vorteil wenn die Zeit gerundet auf volle 5 / 10er angegeben wird !

Bsp. 
11:44 Uhr = 11:40 Uhr 
11:46 Uhr = 11:50 Uhr
11:56 Uhr = 12:00 Uhr

Könnte mir jemand ein Tipp geben wie ich das am besten hin-bekomme oder könnte jemand sogar was fertig machen damit das so läuft ???
Ich habe schon an true / false methode gedacht.

Der Code wird als Javascript in ein PDF Formular hinterlassen Felder ---> ( von: / bis: ) Uhrzeit 


Vielen Dank für eure mühe


----------



## httpdigest (24. Apr 2020)

```
function round(date) {
  return new Date(Math.round(date / 6e5) * 6e5);
  // 6e5 = 600.000 = 10(Minuten) * 60(Sekunden pro Minute) * 1000(Millisekunden pro Sekunde)
}
```
Quelle: https://stackoverflow.com/questions...st-quarter-hour-in-javascript#answer-57055252


----------



## 》Anfänger《 (24. Apr 2020)

Danke , aber ich komme damit nicht klar ... weiß grade nicht wie ich das verarbeiten soll ... vielleicht finde ich ne Lösung


----------



## httpdigest (24. Apr 2020)

Verarbeitung wie folgt:
Dein gegebener Code:

```
var f = this.getField("time_1");
f.value = util.printd("HH:MM", new Date());
```
Neuer Code (ersetzt den Code oben):

```
function round(date) {
  return new Date(Math.round(date / 6e5) * 6e5);
}
var f = this.getField("time_1");
f.value = util.printd("HH:MM", round(new Date()));
```


----------



## 》Anfänger《 (25. Apr 2020)

sehr schon es Funktioniert , wenn es auf 5er runden soll wie würde das aussehen ?? Was muss im Code geändert werden
11:42 = 11:40 Uhr
11:43 = 11:45 Uhr


----------



## httpdigest (25. Apr 2020)

```
function round(date, minuten) {
  var factor = minuten * 6e4;
  return new Date(Math.round(date / factor) * factor);
}
var f = this.getField("time_1");
f.value = util.printd("HH:MM", round(new Date(), 10));
```
EDIT: Der Parameter, mit aktuell 10 als Argument, gibt an, auf wieviel Minuten gerundet werden soll.


----------



## 》Anfänger《 (26. Apr 2020)

Klasse das funzt ... ich runde auf 5er

```
function round(date, minuten) {
  var factor = minuten * 6e4;
  return new Date(Math.round(date / factor) * factor);
}
var f = this.getField("time_1");
f.value = util.printd("HH:MM", round(new Date(), 5));
```

ich will das nun ausrechnen lassen und habe gedacht das geht mit dem

```
var f = this.getField("time2")-this.getField("time1"); 
f.value = util.printd("HH:MM");
```
leider wirft der im Feld nichts aus ??
könnte nochmal einer Helfen


----------



## 》Anfänger《 (26. Apr 2020)

Hat sich erledigt,  konnte es selbst lösen !!!
Danke für eure Hilfe


----------



## 》Anfänger《 (29. Apr 2020)

```
function round(date, minuten) {
  var factor = minuten * 6e4;
  return new Date(Math.round(date / factor) * factor);
}
var f = this.getField("bis1");
f.value = util.printd("HH:MM", round(new Date(), 15));
```

besteht hier die möglichkeit das erst bei 6 aufgerundet und bei 5 abgerundet wird oder wird immer der mittelwert angenommen ?

Bsp. 
10:05 = 10:00 Uhr
10:06 = 10:15 Uhr

wenn das geht könnte mir jemand die Lösung dazu schreiben


----------



## 》Anfänger《 (29. Apr 2020)

blöde frage vergessen wir diese !

andere Frage ,  zwischen 2 Zeiten (Ankuft / Abfahrt) bekomme ich ein Differenz ausgegeben
Bsp.

10:00 - 10:07 = 0:07

kann man dieses ergebnis immer um volle 15 aufrunden lassen ?
Wenn ich nur 6 min. beim kunde bin würde ja  abgerundet werden !!! Richtig ?


----------



## httpdigest (29. Apr 2020)

》Anfänger《 hat gesagt.:


> kann man dieses ergebnis immer um volle 15 aufrunden lassen ?


Ja, das ist sehr leicht möglich.
Aber das artet etwas in Auftragsarbeit hier aus. Du stellst eine Frage, ohne die Absicht, das selbst implementieren zu wollen und suchst jetzt jemanden mit einer fertigen Lösung.
Mal anders gefragt: Wenn du das allerdings selbst umsetzen willst, wo hakt es denn aktuell, dass du das nicht selbst umsetzt?


----------



## 》Anfänger《 (29. Apr 2020)

Sorry ich will kein Überlasten, ich versuche es mal selbst , wahrscheinlich finde ich paar brocken im jetzigen code die ich nutzen kann !
Wenn ich nicht mehr weiterweiß kann ich ja mal den erstellten code hier vorbringen !
Danke trotzdem für die mühe


----------



## httpdigest (29. Apr 2020)

Bei solchen Sachen google ich einfach und die ersten Links im Ergebnis sind dann meist Stackoverflow-Threads.
1. "javascript difference between two dates in minutes" -> https://stackoverflow.com/questions/7709803/javascript-get-minutes-between-two-dates
2. "javascript round up to next 15 minutes" -> https://stackoverflow.com/questions/39317083/make-function-round-up-to-nearest-quarter-hour
Eigentlich kann man wohl so ziemlich jede Frage hier mit Stackoverflow-Threads beantworten.


----------



## 》Anfänger《 (1. Mai 2020)

das hab ich hinbekommen das immer aufgerundet wird , aber ich bekomme das nicht gebacken das das Ergebnis in ein Feld eingetragen wird !

```
var interval = 15 * 60 * 1000; 
new Date(Math.ceil(new Date().getTime()/interval)*interval);
```

Die Sprache ist ja brutal, ich guck mir paar Video & Bücher an vielleicht verstehe ich das komplexe zeug dann besser


----------



## 》Anfänger《 (2. Mai 2020)

so fertig ...


```
function round(date, minuten) {
  var factor = minuten * 6e4;
  return new Date(Math.ceil(date / factor) * factor);
}
var f = this.getField("bis1");
f.value = util.printd("HH:MM", round(new Date(), 15));
```


----------

