cocoon
Erfahrenes Mitglied
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:
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:
% 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
}