尝试将小时:分钟转换为分钟

尝试将小时:分钟转换为分钟

我在尝试将时间格式从“小时:分钟” (例如 12:05) 转换为 12*60+5 = 725 时遇到了一些麻烦,也就是说,我想使用 725 作为分钟数。我已经使用分钟数来设置计数器,但是当我尝试转换字符串然后设置计数器时,我得到了看似不相关的错误。

我尝试使用以下代码,它可以自行运行,但似乎不允许我设置计数器。

\newcommand\LessonStartTimeMins[1]{\splithour#1!}
\def\splithour#1:#2!{\FPupn\result{60 #1 * #2 +}\FPround\result\result{0}\result }

基本上我只是想根据时间格式设置一个计数器,我宁愿使用

\begin{lesson}{The Earth (Fri 24/10/2014, 12:05PM)}{12:05}{70}{Earth}{Activities Not displayed}{text Book}{ % Lesson Objectives 

\begin{lesson}{The Earth (Fri 24/10/2014, 12:05PM)}{725}{70}{Earth}{Activities Not displayed}{text Book}{ % Lesson Objectives 

第二个参数设置计数器

\NewEnviron{lesson}[7]{%
\setcounter{LessonStartTime}{#2}%

当我尝试使用小时格式时,我使用以下

\NewEnviron{lesson}[7]{%
\setcounter{LessonStartTime}{\LessonStartTimeMins{#2}}%

我收到的错误显示如下。

Runaway argument?
725!\relax \newpage \myLandscapeGeom \begin {landscape} \addtocounter \ETC.
! Paragraph ended before \splithour was complete.
<to be read again> 
                   \par 
l.153 \end{singleLesson}

感谢任何人提供的帮助。

答案1

您不需要fp,因为这只是整数算术。

\def\splithour#1:#2!{%
  \setcounter{LessonStartTime}{\numexpr 60*#1+#2\relax}%
}

但“直接”执行操作更容易:

\documentclass{article}
\usepackage{environ}
\newcounter{LessonStartTime}

\NewEnviron{lesson}[7]{%
  \setcounter{LessonStartTime}{\expandafter\numexpr\splithour#2!\relax}%
  #1 --- \theLessonStartTime
}

\def\splithour#1:#2!{60*#1+#2}

\begin{document}
\begin{lesson}
  {The Earth (Fri 24/10/2014, 12:05PM)}
  {12:05}
  {70}
  {Earth}
  {Activities Not displayed}
  {text Book}
  {lesson objectives}
\end{lesson}

\begin{lesson}
  {The Moon (Fri 24/10/2014, 16:24PM)}
  {16:24}
  {70}
  {Moon}
  {Activities Not displayed}
  {text Book}
  {lesson objectives}
\end{lesson}

\end{document}

在此处输入图片描述

答案2

你应该先执行转换计算,然后传递\result设置计数器。fp计算不可扩展,从而导致问题。

这是一个简单的例子:

\documentclass{article}

\usepackage{environ}
\usepackage[nomessages]{fp}

\newcommand{\LessonStartTimeMins}[1]{\splithour#1!}
\def\splithour#1:#2!{\FPupn\result{60 #1 * #2 +}\FPround\result\result{0}}
\newcounter{LessonStartTime}

\NewEnviron{lesson}[7]{%
  \LessonStartTimeMins{#2}% Stores result in \result
  \setcounter{LessonStartTime}{\result}%
  \result
}
\begin{document}

\LessonStartTimeMins{12:05}\result% 725

\setcounter{LessonStartTime}{725}\theLessonStartTime% 725

\setcounter{LessonStartTime}{\result}\theLessonStartTime% 725

\begin{lesson}
  {The Earth (Fri 24/10/2014, 12:05PM)}
  {12:06}% 726
  {70}
  {Earth}
  {Activities Not displayed}
  {text Book}
  {lesson objectives}
\end{lesson}


\end{document}

725725725726


相关内容