我正在学习一点 TeX。以下代码运行良好。但如果小时和分钟都小于 10,我不知道如何为它们添加前导零。
感谢您的帮助。
此代码运行良好。输出:
军事时间为:1221 标准时间为:20:21
\documentclass[]{article}
\setlength\parindent{0in}
\newcount\Hour
\newcount\Minute
\Hour=\time
\divide\Hour by 60
\Minute =\Hour
\multiply\Minute by 60
\advance\Minute by -\time
\Minute = -\Minute
\begin{document}
The military time is: \the\time\\
The standard time is: \the\Hour{:}\the\Minute
\end{document}
答案1
\ifnum...<10
虽然“军事”时间的定义不明确,但通过测试可以解决个位数的小时和分钟问题:
\documentclass[]{article}
\setlength\parindent{0in}
\newcount\Hour
\newcount\Minute
\Hour=\time
\divide\Hour by 60
\Minute =\Hour
\multiply\Minute by 60
\advance\Minute by -\time
\Minute = -\Minute
\def\tdhour{\ifnum\Hour<10 0\the\Hour\else\the\Hour\fi}
\def\tdmin{\ifnum\Minute<10 0\the\Minute\else\the\Minute\fi}
\begin{document}
The military time is: \the\time\\
The standard time is: \tdhour:\tdmin
\end{document}
宏\td...
可以更简单地写成
\def\tdhour{\ifnum\Hour<10 0\fi\the\Hour}
\def\tdmin{\ifnum\Minute<10 0\fi\the\Minute}
答案2
我不确定“军事时间”是什么。当您开始 TeX 运行时,内部计数器\time
将使用午夜后的分钟数进行初始化。
例如,如果我开始运行 TeX,我会看到 1340,它对应于 22:20(当地时间)。
您不需要计数器来获取 hh:mm 格式的时间,因为 LaTeX 内核已经有保存当前小时和当前分钟的计数器,因此您只需将它们包装在一个命令中,如果数字小于 10,则添加前导零。
\documentclass{article}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\printtime}{}
{
\rafiq_twodigits:n { \c_sys_hour_int }
:
\rafiq_twodigits:n { \c_sys_minute_int }
}
\cs_new:Nn \rafiq_twodigits:n
{
\int_compare:nNnT { #1 } < { 10 } { 0 } % perhaps add a leading 0
\int_to_arabic:n { #1 } % print the number
}
\ExplSyntaxOff
\begin{document}
Minutes past midnight: \the\time
Local time: \printtime
\end{document}
答案3
您的问题是:如何以两位数形式打印分钟。我正在使用\Othe
可以通过以下方式定义的宏:
\def\Othe#1{\ifnum#1<10 0\fi\the#1}
并使用:
Time is \the\hours:\Othe\minutes.
如果你正在使用 OpTeX,那么这个计算(基于 \directlua)就可以使用了,因为它是 OpTeX 技巧第 0055 章使用自动加载的宏\sethours
。它将\hours
和\minutes
寄存器设置为当前\time
寄存器中的适当值。而且\Othe
宏也是自动加载的。因此,您只能这样写:
\sethours
Minutes past midnight:: \the\time.
Local time: \the\hours:\Othe\minutes.
\bye
答案4
这个问题让我很困惑。据我所知,您有美国时间(上午、下午)、欧洲时间(17:00)和军事时间(1700)。所以这意味着回答标题中的问题:你只需要删除一个冒号。给出的值\the\time
不是军事时间,只是自午夜以来的分钟数。
为了更简单地重新创建它(如果这是您想要的?),您可以使用
\usepackage{datetime2}
\DTMnewtimestyle{customtimestyle}{%
\renewcommand{\DTMdisplaytime}[3]{
#1:#2
}
}
\DTMsettimestyle{customtimestyle}
\begin{document}
time: \DTMcurrenttime
\end{document}
在\renewcommand
块中,参数#1
、#2
和#3
分别给出小时、分钟和秒。尽情发挥吧!
输出: