ISO日付形式

ISO日付形式

このフォーラムとインターネットで検索しましたが、質問の答えが見つかりません。レポートでは、今日 (2018-02-21) の日付として 2018W083 などの ISO 日付形式を使用したいと考えています。現在、日付には isodate パッケージを使用しています\usepackage[iso]{isodate}

重複した質問であればお知らせください。見つけられませんでした。

答え1

これは(驚くべきことに)些細なことではありません。週番号のマクロしかし、そこでの実装はやや信頼性に欠けるようです。LuaLaTeX を使用する場合は、システム コールを実行して週番号 (および日付の他の部分) を見つけることができます。

システム ライブラリでは日曜日が 0 と定義されていますが、ISO 8601 では 7 と定義されていることに注意してください。

MWE:

\documentclass{article}
\usepackage{luacode}
\newcommand{\weektoday}{\printdate{\the\year}{\the\month}{\the\day}}
\newcommand{\printdate}[3]{%
\luaexec{
timestamp = os.time{year=#1, month=#2, day=#3}
daynr = os.date("\%w",timestamp)
if daynr == "0" then daynr = "7" end
tex.sprint(os.date("\%YW\%V-",timestamp)..daynr)
}
}
\begin{document}
Today: \weektoday

Other date: \printdate{2018}{3}{4}
\end{document}

結果:

ここに画像の説明を入力してください


互換性に関する注意:Windows では、この%V形式は実装されていません。代わりに、%U(最初の日曜日が週 0 を開始) または%W(最初の月曜日が週 0 を開始) を使用できますが、どちらも ISO 標準 (最初の木曜日が週 1 を決定) とは異なります。Lua で ISO 週番号を手動で計算することもできますが、その場合は純粋な LaTeX ソリューションを使用することもできます。

関連情報