ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
2057
2057
EMPFEHLEN
-
Ich benötige einen Befehl, der mir von zwei Zeitangaben im Format HH:MM die Differenz berechnet im Format HH Stunden, MM Minuten, also z.B.
Beginn 10:30
Ende 12:15
Differenz 1 Stunde, 45 Minuten
Ich habe dank Google dazu auch fertigen LaTeX-Code gefunden und war in der Lage, diesen etwas meinen Bedürfnissen anzupassen. Leider komme ich aber an der Stelle nicht weiter, wo man folgende Fallunterscheidungen machen müsste:
- Wenn 1 Stunde, dann "Stunde" sonst "Stunden" schreiben
- Wenn 1 Minute, dann "Minute" sonst "Minuten" schreiben
- Wenn 0 Stunden, dann ganz weglassen
- Wenn 0 Minuten, dann ganz weglassen
Leider habe ich mit if-then-else-Strukturen in LaTeX keine Erfahrung. Vielleicht kann jemand von Euch helfen. Hier der Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
% function to compute the difference between two times hh:mm \newcount\hours \newcount\minutes % \def\gettime#1:#2\relax#3#4{\def#3{#1}\def#4{#2}} % \newcommand{\sub}[2]{\expandafter\gettime#1\relax{\hrs}{\mins}% \expandafter\gettime#2\relax{\subhrs}{\submins}% \hours=\hrs\relax \advance\hours by -\subhrs\relax \minutes=\mins\relax \advance\minutes by -\submins\relax \ifnum\minutes>59\relax \advance\minutes by -60\relax \advance\hours by 1\relax \else \ifnum\minutes<0\relax \advance\minutes by 60\relax \advance\hours by -1\relax \fi \fi \ifnum\hours>23\relax \advance\hours by -24\relax \else \ifnum\hours<0\relax \advance\hours by 24\relax \fi \fi \ifnum\hours>0\relax \ifnum\minutes<10\relax \xdef#1{\number\hours\,Stunden, 0\number\minutes\,Minuten}% \else \xdef#1{\number\hours\,Stunden, \number\minutes\,Minuten}% \fi \fi \ifnum\hours=0\relax \ifnum\minutes<10\relax \xdef#1{0\number\minutes\,Minuten}% \else \xdef#1{\number\minutes\,Minuten}% \fi \fi }Nur tote Fische schwimmen mit dem Strom
-
Okay, war in der Lage, es dann doch relativ unproblematisch selbst rauszufinden. Ist vielleicht nicht die eleganteste Lösung, aber es läuft und für LaTeX reicht es allemal. Der fertige Code steht unten; die Logik von if-then-else-Strukturen (mit Zahlen) in LaTeX ist wie folgt (es gibt sonst auch noch ein extra Paket für LaTeX namens ifthen, das die ganze Sache intuitiver machen soll und auch z.B. String-Vergleiche erlaubt):
Code :1 2 3 4 5 6
% if-then-else in LaTeX \ifnum\myvar>10\relax % Anweisung im if-Fall \else % Anweisung im else-Fall \fi
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
% function to compute the difference between two times hh:mm \newcount\hours \newcount\minutes % \def\gettime#1:#2\relax#3#4{\def#3{#1}\def#4{#2}} % \newcommand{\sub}[2]{\expandafter\gettime#1\relax{\hrs}{\mins}% \expandafter\gettime#2\relax{\subhrs}{\submins}% \hours=\hrs\relax \advance\hours by -\subhrs\relax \minutes=\mins\relax \advance\minutes by -\submins\relax \ifnum\minutes>59\relax \advance\minutes by -60\relax \advance\hours by 1\relax \else \ifnum\minutes<0\relax \advance\minutes by 60\relax \advance\hours by -1\relax \fi \fi \ifnum\hours>23\relax \advance\hours by -24\relax \else \ifnum\hours<0\relax \advance\hours by 24\relax \fi \fi \ifnum\hours>0\relax \ifnum\hours=1\relax % 1 Stunde \ifnum\minutes<10\relax \ifnum\minutes=0\relax \xdef#1{\number\hours\,Stunde}% \else \ifnum\minutes=1\relax \xdef#1{\number\hours\,Stunde, 0\number\minutes\,Minute}% \else \xdef#1{\number\hours\,Stunde, 0\number\minutes\,Minuten}% \fi \fi \else \xdef#1{\number\hours\,Stunde, \number\minutes\,Minuten}% \fi \else % x Stunden \ifnum\minutes<10\relax \ifnum\minutes=0\relax \xdef#1{\number\hours\,Stunden}% \else \ifnum\minutes=1\relax \xdef#1{\number\hours\,Stunden, 0\number\minutes\,Minute}% \else \xdef#1{\number\hours\,Stunden, 0\number\minutes\,Minuten}% \fi \fi \else \xdef#1{\number\hours\,Stunden, \number\minutes\,Minuten}% \fi \fi \else \ifnum\minutes<10\relax \ifnum\minutes=1\relax \xdef#1{0\number\minutes\,Minute}% \else \xdef#1{0\number\minutes\,Minuten}% \fi \else \xdef#1{\number\minutes\,Minuten}% \fi \fi }Nur tote Fische schwimmen mit dem Strom
Ähnliche Themen
-
Differenz zwischen zwei Daten
Von Tommy57 im Forum PHPAntworten: 2Letzter Beitrag: 07.12.10, 01:42 -
SQLite: Differenz zwischen zwei Datumseinträgen
Von basti33 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 02.06.07, 17:55 -
Differenz zwischen zwei Zeit-Stempel berechnen
Von Shadow-Rider im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 13.01.05, 11:19 -
Differenz zweier Zeiten
Von Julian Maicher im Forum .NET ArchivAntworten: 3Letzter Beitrag: 10.01.05, 15:19 -
Mit Daten rechnen: Eingabe, Differenz zwischen zwei Daten (auch wenn Gebtag vor 1970)
Von nicklex im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 1Letzter Beitrag: 23.09.04, 11:34





Zitieren
Login





