Je souhaite produire une représentation du trimestre de l'année en cours, ainsi que du trimestre de l'année du mois précédent.
Si aujourd'hui est le 1er janvier 2012, j'aimerais avoir
2012q1
et
2011q4
comme sorties respectives.
command-line
date
smokris
la source
la source
%m
donne09
qui tente bash d'interpréter comme octal en raison de le 0, donc cela jette une erreur qui dit09: value too great for base (error token is "09")
. Cela peut être résolu en désactivant le remplissage 0 en passant%m
à%-m
.Utilisez mes dateutils :
Les drapeaux
%q
et%Q
sont spécifiques aux dateutils et renvoient le trimestre sous forme de nombre ou dans le formulaireQ<NUMBER>
.la source
dconv now -f%Y%Q | tr Q q
si vous avez vraiment besoin que ce Q soit inférieur. (PS: nous emballons ceci dans Fedora avecdate
comme préfixe au lieu ded
, donc "dateconv
".)Toutes les solutions divisées par quatre échouent, par exemple en novembre:
Le calcul correct serait:
Et en tant que tel, le trimestre du mois en cours et du mois précédent serait:
Ce n'est que douze valeurs à vérifier, vraiment ...
la source
Il n'y a probablement pas de solution directe.
Vous pouvez utiliser
awk
pour éviter autant de tiques en arrière.Une
perl
solution serait plus propre maisperl
etDateTime
sont une condition sine qua non lourd.la source
date
deux fois.Divisez le format avec la date, calculez avec awk, formatez avec printf:
Juste date et bash:
la source
2012q0
ce qui est incorrect.Une alternative, plus comme curiosité. Si GNU
awk
est impliqué,date
n'est pas nécessaire:la source
Appelez
date
pour récupérer l'année et le mois en cours et faites le reste avec l'arithmétique dans la coquille.la source
Trimestre pour ce mois
Trimestre annuel pour le mois précédent
la source
Mathématiques de base pour ce trimestre et le trimestre du mois dernier:
Le script utilise les parties suivantes:
la source
Il y a maintenant le
%q
format pour afficher ces informations.Depuis le journal des versions de coreutils-8.26 du 30 novembre 2016:
Et oui ça marche!
la source
Si vous voulez le trimestre fiscal de 13 semaines basé sur le calendrier hebdomadaire ISO, le nouveau% q pratique ne fonctionnera malheureusement pas. Voici une version de la solution sans date de @ manatwork avec awk / strftime.
Le dernier petit morceau ternaire gère les années ISO de semaine bissextile où le dernier trimestre a 14 semaines.
la source