Формат даты ISO

Формат даты ISO

Я провел поиск на этом форуме и в Интернете и не нашел ответа на свой вопрос. Я хочу использовать формат даты ISO, например 2018W083 для сегодняшнего дня (2018-02-21) в своих отчетах. Сейчас я использую пакет isodate для своих дат, \usepackage[iso]{isodate}.

Если это дубликат вопроса, пожалуйста, дайте мне знать. Я не смог его найти.

решение1

Это (удивительно) не тривиально. ЕстьМакрос для номера неделино реализация там, кажется, немного ненадежна. Если вы готовы использовать LuaLaTeX, то вы можете сделать системный вызов, чтобы найти номер недели (и другие части даты).

Обратите внимание, что системная библиотека определяет воскресенье как 0, тогда как ISO 8601 определяет его как 7.

МВЭ:

\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). Вы можете вручную вычислить номер недели ISO в Lua, но в этом случае вы можете использовать чистое решение LaTeX.

Связанный контент