Quando tento obter o número da semana de 31 de dezembro, ele retorna 1. Quando recebo o número da semana de 30 de dezembro, recebo 52 --- que é o que eu esperaria. O dia segunda-feira está correto. Isso está em um RPI executando o Ubuntu.
$ date -d "2018-12-30T1:58:55" +"%V%a"
52Sun
$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
Mesmo problema sem string de tempo
$ date -d "2018-12-31" +"%V%a"
01Mon
Isso está dando a você a semana ISO que começa em uma segunda-feira.
Se você quiser mostrar 31/12 como a semana 52, você deve usar
%U
, que não usa o padrão ISO:A definição do número da semana é diferente entre a Europa e os EUA, provavelmente ISO versus padrões ANSI. Isso pode estar relacionado a uma semana sendo domingo - sábado ou segunda - domingo, e isso novamente pode estar relacionado à definição judaica versus cristã do Dia do Senhor (sábado versus domingo).
Para a Europa, a semana número 1 contém a primeira quinta-feira de janeiro e, portanto, contém um mínimo de 4 dias (ou seja, a maioria) pertencentes ao ano novo (Qui-Sex-Sáb-Dom).
De qualquer forma, nesses anos em que TODOS (!!) os números das semanas são +/- 1 diferente entre a Europa e os EUA, isso dá uma grande diversão com a definição de horários em empresas multinacionais. :-)