Estou interessado em apresentar uma representação do atual trimestre do ano, bem como do trimestre do mês anterior.
Se hoje é 1º de janeiro de 2012, eu gostaria de obter
2012q1
e
2011q4
como as respectivas saídas.
command-line
date
smokris
fonte
fonte
%m
dá09
que bash tenta interpretar como octal devido ao 0 inicial, então isso gera um erro que diz09: value too great for base (error token is "09")
. Isso pode ser corrigido desativando o preenchimento de 0, alterando%m
para%-m
.Use meus dateutils :
Os sinalizadores
%q
e%Q
são específicos para dateutils e retornam o trimestre como número ou no formulárioQ<NUMBER>
.fonte
dconv now -f%Y%Q | tr Q q
se você realmente precisa que o Q seja menor. (PS: estamos embalagem isso em Fedora comdate
como prefixo em vez ded
, por isso "dateconv
".)Todas as soluções divididas por quatro falham, por exemplo, novembro:
A matemática correta seria:
E, como tal, o trimestre do mês atual e anterior seria:
São apenas doze valores para verificar, realmente ...
fonte
Provavelmente, não há solução direta.
Você pode usar
awk
para evitar tantos tiques de volta.A
perl
solução seria mais limpo, masperl
eDateTime
são um pré-requisito pesado.fonte
date
duas vezes.Divida o formato com data, calcule com awk, formate com printf:
Apenas data e festança:
fonte
2012q0
incorreta.Uma alternativa, mais como curiosidade. Se o GNU
awk
estiver envolvido,date
não é necessário:fonte
Ligue
date
para recuperar o ano e o mês atuais e faça o resto com aritmética no shell.fonte
Trimestre do ano deste mês
Trimestre do ano para o mês anterior
fonte
Matemática básica para este trimestre e o trimestre passado:
O script usa as seguintes partes:
fonte
Agora existe o
%q
formato para mostrar essas informações.No log de lançamento do coreutils-8.26 de 30 de novembro de 2016:
E sim, funciona!
fonte
Se você quiser o trimestre fiscal de 13 semanas baseado no calendário semanal da ISO, o novo% q útil não funcionará, infelizmente. Aqui está uma versão da solução sem dados do @ manatwork com awk / strftime.
O último pequeno pedaço ternário lida com os anos da semana bissextos da ISO, onde o último trimestre tem 14 semanas.
fonte