有没有可以添加和减去小时和分钟的包。我的意思是,我想\newcommand{\time}{10:00}
在文档中定义和使用它
\time + 00:20 = 10:20
\time + 01:30 = 11:30
我的想法是修改命令\time
,这样文档中的所有其他时间都会被修改。
答案1
在下面的代码中,宏\setcurrtime
设置当前时间,以便稍后使用\currtime
。
该宏\currtime
打印当前时间;如果给出了一个可选参数,它将偏移当前时间(偏移量假定为正数)。
\documentclass{article}
\makeatletter
\newcommand{\setcurrtime}[1]{%
\set@time\curr@hour\curr@mins#1\@nil
}
\def\set@time#1#2#3:#4\@nil{%
\def#1{#3}\def#2{#4}%
}
\newcommand{\currtime}[1][00:00]{%
\begingroup
\set@time\new@hour\new@mins#1\@nil
\count\z@=\curr@mins\relax
\count\tw@=\curr@hour\relax
\advance\count\z@\new@mins\relax
\advance\count\tw@\new@hour\relax
\ifnum\count\z@>59
\advance\count\z@-60
\advance\count\tw@\@ne
\fi
% we have to use \count\z@ and \count\tw@ before
% ending the group and printing the result
\edef\x{\endgroup\two@digits{\count\tw@}:\two@digits{\count\z@}}\x
}
\makeatother
\begin{document}
\setcurrtime{10:00}
\currtime
\currtime[00:20]
\currtime[01:30]
\setcurrtime{14:54}
\currtime[00:05]
\currtime[00:06]
\currtime[00:07]
\end{document}
仅作为例子,我使用了\setcurrtime
两次,以表明极限情况得到正确处理。