Como posso usar o comando date para converter algo como "segunda-feira semana 40" em uma data ISO?
Estou brincando com algo assim:
date --date='monday week 40' +'%Y-%m-%d'
E a data que estou procurando seria 03/10/2011.
Mas meu problema é que essa sequência de datas não é válida, portanto, preciso de outra abordagem para resolver esse problema.
/Obrigado
%V
sequência de formato usada por 'usuário desconhecido' informa o número da semana ISO.Respostas:
Muito feio e provavelmente funciona apenas com o GNU
date
:Testado apenas para o seu exemplo de 3 de outubro, pode falhar em alguns outros casos.
Atualização : se você não tiver um código de idioma, precisará especificar a saída a partir da data interna para começar a trabalhar. (E% F é apenas AAAA-MM-DD).
fonte
Uma abordagem alternativa:
fonte
date +%V
retorna41
), o--date
valor do parâmetro será+-1weeks last monday
, que é na verdade quinze dias atrás, não sete dias atrás.date -d 'last monday'
. Voltará ontem. O que você acha que teria dito se você tivesse rodado ontem?OK, aqui está a minha tentativa. Ele rouba idéias das outras respostas e tenta tornar a lógica mais fácil de seguir. Isso é baseado no sistema ISO 8601, portanto, não será correto se você mora em países como EUA ou Canadá, mas deve ser facilmente ajustável para esses países.
fonte