Wie kann ich in einem Linux-Terminal herausfinden, welche Schaltjahre zwischen 2014 und 2020 liegen?
Gibt es eine Möglichkeit, mit Code wie $cal
- irgendetwas sofort zu zeigen, welche Jahre Schaltjahre zwischen 2014 und 2020 sind?
command-line
time
Lee
quelle
quelle
Antworten:
Sie können den
date
Exit-Code von verwenden, um nach einem Schaltjahr zudate
suchen. Dabei müssen Sie darauf vertrauen, dass ein Exit-Code ungleich 0 für ein ungültiges Datum generiert wird. Offensichtlich gibt es in einem Jahr ohne Schaltjahr keinen 29. Februar:als eine Funktion:
Verwendung:
Was Ihre Frage betrifft:
quelle
Nur eine Variante der Antwort von @ RoVo ...
date -d $a-02-29 +"%Y" 2> /dev/null
Setzt das Datum auf den 29. Februar und gibt das Jahr aus, wobei auftretende Fehler ignoriert werden.quelle
seq -f "%g-02-29" 2014 2020 | date -f- +"%Y" 2>/dev/null
Hier bei Stack Overflow bot anubhava eine elegante Lösung :
Speichern Sie die oben genannten Informationen in einer Textdatei mit dem Namen
isleap
.Vergessen Sie nicht, die Ausführungsberechtigung festzulegen:
Probier es aus:
quelle
date
Befehl abhängen, sind Hacks.Wenn Sie sich nicht auf einige zufällige „arkane“ Eigenschaften von Schaltjahren verlassen möchten (wie die Teilbarkeit, die Anzahl der Tage in einem Jahr oder die Existenz eines bestimmten Tages), sollten Sie eine Programmiersprache mit einer geeigneten Kalenderbibliothek verwenden Funktion. Ich empfehle Pythons 1, 2 :
calendar.isleap()
Verwendung:
Oder als Einzeiler (ohne richtige Fehlerbehandlung):
1 Ich bin sicher, dass es eine einfache gleichwertige Perl-Lösung gibt.
2 Pythons
calendar
Modul verwendet den proleptischen Gregorianischen Kalender , dh es erweitert den G.-Kalender auf unbestimmte Zeit in die Vergangenheit und Zukunft. Es wird nicht berücksichtigt, dass der G.-Kalender erst 1582 in Kraft getreten ist oder dass einige Gebietsschemata weiterhin andere Kalender mit anderen Schaltjahrregeln verwenden. Wenn Sie Unterstützung für andere Kalender benötigen, z. B. für den Julianischen Kalender, empfehle ich, ein geeignetes Python-Erweiterungsmodul zu installieren und zu verwenden.quelle
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)
. Gleiches fct. wie in askubuntu.com/a/1081237/790920 verwendet