[texhax] Time calculations within LaTeX?
E. Krishnan
ekmath at asianetindia.com
Sat Feb 9 13:49:01 CET 2008
On Sat, 9 Feb 2008, Richard Hartmann wrote:
> On Feb 9, 2008 6:56 AM, E. Krishnan <ekmath at asianetindia.com> wrote:
>
>
>> Then \timediff10:15-16:00 gives 5.75 and \timediff10:15-01:00 gives 14.75.
>
> I found two issues with the function, one of which I could fix :)
>
> You need to reinitialize dh, dm, hrdec for the function to give the correct
> result when called more than once in a tex file.
>
> \setcounter{dh}{0}
> \setcounter{dm}{0}
> \setcounter{hrdec}{0}
>
> does the trick.
But I didn't have this issue.
> The other issue is that when the minute or hour values are equal, you
> get a null result, no matter what the other parameter is.
Oops! Sort of overlooked that case. Here's the modification to take care
of this:
\def\timediff#1:#2-#3:#4 {%
\setcounter{bh}{#1}
\setcounter{bm}{#2}
\setcounter{eh}{#3}
\setcounter{em}{#4}
\ifthenelse{\(\value{eh}>\value{bh}\or\value{eh}=\value{bh}\)
\and\(\value{em}>\value{bm}\or\value{em}=\value{bm}\)}
{\setcounter{dh}{\value{eh}-\value{bh}}
\setcounter{dm}{\value{em}-\value{bm}}}
{\ifthenelse{\(\value{eh}>\value{bh}\or\value{eh}=\value{bh}\)
\and\value{em}<\value{bm}}
{\setcounter{dh}{\value{eh}-\value{bh}-1}
\setcounter{dm}{60+\value{em}-\value{bm}}}
{\ifthenelse{\value{eh}<\value{bh}
\and\(\value{em}>\value{bm}\or\value{em}=\value{bm}\)}
{\setcounter{dh}{24+\value{eh}-\value{bh}}
\setcounter{dm}{\value{em}-\value{bm}}}
{\ifthenelse{\value{eh}<\value{bh}\and\value{em}<\value{bm}}
{\setcounter{dh}{23+\value{eh}-\value{bh}}
\setcounter{dm}{60+\value{em}-\value{bm}}}}}{}}
\setcounter{hrdec}{\value{dm}*5/3}
\thedh.\thehrdec}
--
Krishnan
More information about the texhax
mailing list