¿Cómo puedo saber cuáles son los años bisiestos entre 2014 y 2020 en un terminal Linux?
¿Hay alguna forma de usar algún código como $cal
, algo para mostrar qué años son bisiestos entre 2014 y 2020 de inmediato?
command-line
time
sotavento
fuente
fuente
Respuestas:
Puede usar
date
el código de salida de 's para verificar un año bisiesto, confiando endate
el comportamiento de generar un código de salida que no sea 0 para una fecha no válida, obviamente no hay 29 de febrero en un año no bisiesto:como una función:
Uso:
Con respecto a tu pregunta:
fuente
Solo una variante de la respuesta de @ RoVo ...
date -d $a-02-29 +"%Y" 2> /dev/null
establece la fecha al 29 de febrero e imprime el año, ignorando cualquier error que ocurra.fuente
seq -f "%g-02-29" 2014 2020 | date -f- +"%Y" 2>/dev/null
Aquí en Stack Overflow, anubhava proporcionó una solución elegante :
Guarde lo anterior en un archivo de texto llamado
isleap
.No olvide configurar el permiso de ejecución:
Pruébalo:
fuente
date
comando son hacks.Si no desea confiar en algunas propiedades "arcanas" incidentales de los años bisiestos (como su divisibilidad, la cantidad de días en un año o la existencia de un día específico), debe usar un lenguaje de programación con una biblioteca de calendario adecuada función. Recomiendo Python 1, 2 :
calendar.isleap()
Uso:
O como una línea (sin el manejo adecuado de errores):
1 Estoy seguro de que hay una solución Perl equivalente simple.
2 El
calendar
módulo de Python utiliza el calendario gregoriano proleptico , es decir, extiende el calendario G. indefinidamente al pasado y al futuro. No tiene en cuenta que el calendario G. solo entró en vigencia en 1582 o que algunos locales continúan usando otros calendarios con diferentes reglas de año bisiesto. Si necesita soporte para otros calendarios, por ejemplo, el calendario juliano, le recomiendo que instale y use un módulo de extensión Python apropiado.fuente
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)
. Mismo fct. como se usa en askubuntu.com/a/1081237/790920