Formato de data ISO

Formato de data ISO

Fiz uma pesquisa neste fórum e na internet e não encontrei a resposta para minha dúvida. Pretendo usar um formato de data ISO como 2018W083 para hoje (21/02/2018) em meus relatórios. Eu uso o pacote isodate agora para minhas datas, \usepackage[iso]{isodate}.

Se esta for uma pergunta duplicada, por favor me avise. Eu não consegui encontrar.

Responder1

Isso (surpreendentemente) não é trivial. HáMacro para número da semanamas a implementação parece não ser confiável. Se você estiver disposto a usar o LuaLaTeX, poderá fazer uma chamada de sistema para encontrar o número da semana (e outras partes da data).

Observe que a biblioteca do sistema define domingo como 0, enquanto a ISO 8601 o define como 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}

Resultado:

insira a descrição da imagem aqui


Nota de compatibilidade:no Windows o %Vformato não está implementado. Em vez disso, você pode usar %U(o primeiro domingo começa a semana 0) ou %W(a primeira segunda-feira começa a semana 0), porém ambos são diferentes do padrão ISO (a primeira quinta-feira determina a semana 1). Você pode calcular o número da semana ISO manualmente em Lua, mas nesse caso você também pode usar uma solução LaTeX pura.

informação relacionada