如何使用 datetime2 更改我的乳胶文档的时区,而不考虑我的计算机时区?

如何使用 datetime2 更改我的乳胶文档的时区,而不考虑我的计算机时区?

我想更改时区格式(例如,我想始终使用 GMT-3 时区)。我正在使用datetime2包。我是否需要使用手动的

\DTMdisplayzone{〈TZh〉}{〈TZm〉}

答案1

datetime2软件包有一个用于对时间和日期进行计算的库,可以使用 加载\usepackage[calc]{datetime2}。该库提供了两个函数来转换祖鲁时间 (UTC+0)。使用这些函数,您可以执行三步方法:首先将当地时间转换为祖鲁时间,其次将祖鲁时间转换为您想要显示的时区,第三步在请求的时区中实际显示第二步的结果。

在下面的 MWE 中,我定义了两个新命令,一个用于转换为任意时区,带有两个参数,分别为偏移量和反向偏移量,一个快捷命令,其参数预先填充了中欧夏令时(这有点奇怪,因为现在不是夏季,但无论如何它是 UTC+2,因此芬兰、波罗的海国家、大多数巴尔干国家、一些中东国家、埃及、利比亚)。

梅威瑟:

\documentclass[en-MT]{article}
\usepackage[calc,useregional]{datetime2}
\begin{document}
\DTMsetstyle{en-MT-numeric}

\newcommand{\DTMtznow}[2]{%
% store current time in object 'now'
\DTMsavenow{now}%
% convert current time to UTC+0
\DTMtozulu{now}{currzulu}%
% add requested timezone offset to zulu time
\DTMsaveaszulutime{currcest}{\DTMfetchyear{currzulu}}{\DTMfetchmonth{currzulu}}{\DTMfetchday{currzulu}}{\DTMfetchhour{currzulu}}{\DTMfetchminute{currzulu}}{\DTMfetchsecond{currzulu}}{#2}{00}%
% display zulu+offset in requested timezone (= reverse offset)
\DTMdisplay{\DTMfetchyear{currcest}}{\DTMfetchmonth{currcest}}{\DTMfetchday{currcest}}{}{\DTMfetchhour{currcest}}{\DTMfetchminute{currcest}}{\DTMfetchsecond{currcest}}{#1}{00}%
}
% shortcut command for central european summer time (UTC+2)
\newcommand{\DTMcestnow}{\DTMtznow{+02}{-02}}

in current timezone: \DTMnow

in CEST: \DTMcestnow
\end{document}

结果:

在此处输入图片描述

相关内容