Comment puis-je utiliser la commande date pour convertir quelque chose comme "lundi semaine 40" en une date ISO?
Je joue avec quelque chose comme ça:
date --date='monday week 40' +'%Y-%m-%d'
Et la date que je recherche serait le 2011-10-03.
Mais mon problème est que cette chaîne de date n'est pas valide, j'ai donc besoin d'une autre approche pour résoudre ce problème.
/Merci
%V
séquence de format utilisée par 'utilisateur inconnu' rapporte le numéro de semaine ISO.Réponses:
Vraiment moche et ne fonctionne probablement qu'avec GNU
date
:Testé uniquement pour votre exemple du 3 octobre, peut échouer pour certains autres cas.
Mise à jour : Si vous avez un environnement local non eng, vous devez spécifier la sortie de la date interne pour vous mettre au travail. (Et% F est simplement AAAA-MM-JJ).
la source
Une approche alternative:
la source
date +%V
retourne41
), alors la--date
valeur du paramètre sera+-1weeks last monday
, qui est en fait il y a une quinzaine, pas 7 jours.date -d 'last monday'
. Il reviendra hier. Que pensez-vous qu'il aurait dit si vous l'aviez exécuté hier?OK, voici ma tentative. Il dérobe les idées des autres réponses et tente de rendre la logique plus facile à suivre. Ceci est basé sur le système ISO 8601, il ne sera donc pas correct si vous vivez dans des pays tels que les États-Unis ou le Canada, mais devrait être facilement réglable pour ces pays.
la source