Geliefert werden mir Zeitwerte, z.B.
MI="01:02:54.598"
Wie kann ich das auf volle Sekunden runden (also nicht einfach abschneiden), um
MI="01:02:55"
zu erhalten?
Anmeldungsdatum: Beiträge: 857 |
Geliefert werden mir Zeitwerte, z.B. MI="01:02:54.598" Wie kann ich das auf volle Sekunden runden (also nicht einfach abschneiden), um MI="01:02:55" zu erhalten? |
||
![]() Anmeldungsdatum: Beiträge: 147 |
Eine Möglichkeit wäre:
Man könnte das sicherlich auch mit dem Abschneiden von Mustern machen. Gruß Carsten |
||
![]() Anmeldungsdatum: Beiträge: 834 Wohnort: Hamburg |
1. Ist es nur das, was du als ausgangs wert hast? 2. Wie ist es mit der Rundung, wann soll auf und wann abgerundet werden, das wurde hier nicht geschrieben 3. Wenn es ein richtiges Datum + Zeit währe könnte man es versuchen mit:
|
||
Supporter
Anmeldungsdatum: Beiträge: 1280 |
Man kann es auch mit "date" bestimmen (wegen 23:59:59.512 und Datumswechsel): $ MI="01:02:54.598"; date -d@$(($(date -d $MI +%s)+$((${MI#*.}<500?0:1)))) +%X 01:02:55 $ # oder $ MI="23:59:59.512"; date -d@$(($(date -d $MI +%s)+$((${MI#*.}<500?0:1)))) +%X 00:00:00 $ |
||
Anmeldungsdatum: Beiträge: 1388 |
|||
![]() Anmeldungsdatum: Beiträge: 147 |
|||
![]() Anmeldungsdatum: Beiträge: 147 |
Ist auch Blödsinn was ich da geschrieben habe, weil es die aufzurundenden Minuten/Stunden nicht mit berücksichtigt. Asche auf mein Haupt 😊 |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 857 |
Danke shiro
(Wieder einmal) perfekt! |
||
(Themenstarter)
Anmeldungsdatum: Beiträge: 857 |
Hallo @shiro
Leider doch nicht ganz: Bei einigen 100 Dateien finden sich Zeitstempel, deren Millisekunden-Teil mit '0' beginnt:
Der Fehler tritt nur auf, wenn der Millisekunden-Teil mit '0' beginnt: ... test.sh: Zeile 47: 084: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "084"). test.sh: Zeile 47: 089: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "089"). test.sh: Zeile 47: 018: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "018"). test.sh: Zeile 47: 009: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "009"). test.sh: Zeile 47: 018: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "018"). test.sh: Zeile 47: 084: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "084"). test.sh: Zeile 47: 082: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "082"). test.sh: Zeile 47: 068: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "068"). test.sh: Zeile 47: 029: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "029"). test.sh: Zeile 47: 068: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "068"). test.sh: Zeile 47: 084: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "084"). test.sh: Zeile 47: 029: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "029"). test.sh: Zeile 47: 090: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "090"). test.sh: Zeile 47: 083: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "083"). test.sh: Zeile 47: 095: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "095"). test.sh: Zeile 47: 082: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "082"). test.sh: Zeile 47: 048: Der Wert ist für die aktuelle Basis zu groß. (Fehlerverursachendes Zeichen ist "048"). ... |
||
Top-Wikiautor
![]() Anmeldungsdatum: Beiträge: 2400 Wohnort: Hunsrück (dunkle Seite) |
Ich hätte die Ausgabe direkt mit date formatiert ... +%H%M%S Ist halt immer abgerundet. |
||
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4695 Wohnort: Berlin |
@michahe: Bei führender 0 wird das als Oktalzahl gelesen. Das heisst auch wenn da dann keine Ziffern jenseits von 7 drin vorkommen, gibt es keine Fehlermeldung, aber der Wert wird falsch berechnet. |
||
Supporter
Anmeldungsdatum: Beiträge: 1280 |
Ich bin im Moment leider unterwegs. Das Problem liegt daran, dass eine mit 0 beginnende Zahl als Oktalzahl interpretiert wird und dann auftauchende 8 und 9 Ziffern illegal sind. Prüfe daher besser auf das Zeichen nach dem Punkt: echo $(date -d@$(($(date -d $MI_Dauer +%s)+$((${MI_Dauer:9:1}<5?0:1)))) +%X) Leider kann ich das im Moment nicht prüfen. |
||
Anmeldungsdatum: Beiträge: 1388 |
... aber nicht gewollt, sonst wären wir hier längst fertig: date -d"$MI" +%T |
||
![]() Anmeldungsdatum: Beiträge: 7790 |
|||
Anmeldungsdatum: Beiträge: 1388 |
Ich wusste gar nicht, dass die Angabe von Sekunden mit der Option Nachtrag: Das werde ich gleich im Wiki ergänzen. ☺ |