Ein Befehl soll ein Zeitintervall mit Anfangs- und Endzeitpunkt ausgeben. Der Endzeitpunkt wird als Argument übergeben. Die Länge des Zeitintervalls in Minuten ist als globale Variable gespeichert. Es kommt expl3 zum Einsatz. Wie kann der Anfangszeitpunkt berechnet werden?

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{xparse}
\usepackage{datetime2}
\ExplSyntaxOn
\int_const:Nn \c_meinmodul_dauer_int {20}
\NewDocumentCommand \Zeitintervall {m}
{
\str_set:Nx \l_tmpa_str {#1\c_colon_str 00}
\DTMsavetime{l_meinmodul_endzeit}{\l_tmpa_str}
Das~Zeitintervall~ist~\int_use:N \c_meinmodul_dauer_int ~
Minuten~lang~und~dauert~von~<Anfangszeitpunkt>~
bis~\DTMusetime{l_meinmodul_endzeit}.
}
\ExplSyntaxOff
\begin{document}
\Zeitintervall{15:10}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 04 Mai '18, 13:47

Cletus's gravatar image

Cletus
1.6k75866
Akzeptiert-Rate: 75%


Das ist eigentlich simple Mathematik. Im folgenden Beispiel mache ich mir das Leben etwas leichter, indem ich davon ausgehe, dass der Zeitunterschied maximal 24 Stunden beträgt:

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{xparse}
\usepackage{datetime2}
\ExplSyntaxOn
\int_const:Nn \c_meinmodul_dauer_int {20}
\int_new:N \l__meinmodul_hours_int
\int_new:N \l__meinmodul_minutes_int
\int_new:N \l__meinmodul_diffhours_int
\int_new:N \l__meinmodul_diffminutes_int
\NewDocumentCommand \Zeitintervall {m}
{
\str_set:Nx \l_tmpa_str {#1\c_colon_str 00}
\DTMsavetime{l_meinmodul_endzeit}{\l_tmpa_str}
\int_set:Nn \l__meinmodul_hours_int { \DTMfetchhour {l_meinmodul_endzeit} }
\int_set:Nn \l__meinmodul_minutes_int { \DTMfetchminute {l_meinmodul_endzeit} }
\int_set:Nn \l__meinmodul_diffhours_int { \int_eval:n { \c_meinmodul_dauer_int / 60 } }
\int_set:Nn \l__meinmodul_diffminutes_int { \int_eval:n { \c_meinmodul_dauer_int - \l__meinmodul_diffhours_int * 60 } }
\int_sub:Nn \l__meinmodul_minutes_int \l__meinmodul_diffminutes_int
\int_compare:nNnT \l__meinmodul_minutes_int < { 0 }
{
\int_decr:N \l__meinmodul_hours_int
\int_add:Nn \l__meinmodul_minutes_int { 60 }
}
\int_sub:Nn \l__meinmodul_hours_int \l__meinmodul_diffhours_int
\int_compare:nNnT \l__meinmodul_hours_int < { 0 }
{ \int_add:Nn \l__meinmodul_hours_int { 24 } }
\str_set:Nx \l_tmpa_str { \int_use:N \l__meinmodul_hours_int \c_colon_str \int_use:N \l__meinmodul_minutes_int \c_colon_str 00}
\DTMsavetime{l_meinmodul_anfangszeit}{\l_tmpa_str}
Das~Zeitintervall~ist~\int_use:N \c_meinmodul_dauer_int ~
Minuten~lang~und~dauert~von~\DTMusetime{l_meinmodul_anfangszeit}~
bis~\DTMusetime{l_meinmodul_endzeit}.
}
\ExplSyntaxOff
\begin{document}
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 04 Mai '18, 17:36

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×2
×1

gestellte Frage: 04 Mai '18, 13:47

Frage wurde gesehen: 3,897 Mal

zuletzt geändert: 04 Mai '18, 17:36

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×