Comment savoir quelles sont les années bissextiles entre 2014 et 2020 dans un terminal Linux?
Existe-t-il un moyen d'utiliser un code comme $cal
- quelque chose pour montrer immédiatement quelles années sont des années bissextiles entre 2014 et 2020?
Réponses:
Vous pouvez utiliser
date
le code de sortie de 'pour vérifier une année bissextile, en vous basant surdate
le comportement de' générer un code de sortie non 0 pour une date non valide, évidemment il n'y a pas de 29 février dans une année non bissextile:en tant que fonction:
Usage:
Concernant votre question:
la source
Juste une variante de la réponse de @ RoVo ...
date -d $a-02-29 +"%Y" 2> /dev/null
définit la date au 29 février et imprime l'année, en ignorant les erreurs qui se produisent.la source
seq -f "%g-02-29" 2014 2020 | date -f- +"%Y" 2>/dev/null
Ici sur Stack Overflow, une solution élégante a été fournie par anubhava :
Enregistrez ce qui précède dans un fichier texte nommé
isleap
.N'oubliez pas de définir l'autorisation d'exécution:
Essaye-le:
la source
date
commande sont des hacks.Si vous ne voulez pas vous fier à certaines propriétés «obscures» accessoires des années bissextiles (comme leur divisibilité, le nombre de jours dans une année ou l'existence d'un jour spécifique), vous devez utiliser un langage de programmation avec une bibliothèque de calendriers appropriée. une fonction. Je recommande 1, 2 de Python :
calendar.isleap()
Usage:
Ou en une ligne (sans traitement d'erreur approprié):
1 Je suis sûr qu'il existe une solution Perl équivalente simple.
2 Le
calendar
module de Python utilise le calendrier grégorien proleptique , c'est-à-dire qu'il étend indéfiniment le calendrier G. dans le passé et le futur. Il ne tient pas compte du fait que le calendrier G. n'est entré en vigueur qu'en 1582 ou que certains paramètres régionaux continuent d'utiliser d'autres calendriers avec des règles d'année bissextile différentes. Si vous avez besoin de support pour d'autres calendriers, par exemple le calendrier Julian, je vous recommande d'installer et d'utiliser un module d'extension Python approprié.la source
def isleap(year):
"""Return True for leap years, False for non-leap years."""
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)
. Même fct. tel qu'utilisé dans askubuntu.com/a/1081237/790920