Как я могу узнать, какие високосные годы между 2014 и 2020 годами в терминале Linux?
Есть ли способ использовать какой-то код, например, $cal
что-нибудь, чтобы показать, какие годы являются високосными между 2014 и 2020 годами?
command-line
time
подветренный
источник
источник
Ответы:
Вы можете использовать
date
код выхода для проверки високосного года, полагаясь наdate
поведение генерации кода выхода, отличного от 0, для недопустимой даты, очевидно, что 29-го февраля не было високосного года:как функция:
Использование:
По поводу вашего вопроса:
источник
Просто вариант ответа @ RoVo ...
date -d $a-02-29 +"%Y" 2> /dev/null
устанавливает дату 29 февраля и печатает год, игнорируя любые возникающие ошибки.источник
seq -f "%g-02-29" 2014 2020 | date -f- +"%Y" 2>/dev/null
Здесь, на Stack Overflow, анубхава предоставила элегантное решение :
Сохраните вышесказанное в текстовых файлах с именем
isleap
.Не забудьте установить разрешение на выполнение:
Проверь это:
источник
date
команде, являются хаки.Если вы не хотите полагаться на некоторые случайные «тайные» свойства високосных лет (такие как их делимость, количество дней в году или наличие определенного дня), вам следует использовать язык программирования с соответствующей библиотекой календаря. функция. Я рекомендую Python 1, 2 :
calendar.isleap()
Использование:
Или в виде одной строки (без надлежащей обработки ошибок):
1 Я уверен, что существует простое эквивалентное решение Perl.
2
calendar
Модуль Python использует пролептический григорианский календарь , то есть он расширяет календарь G. на неопределенное время в прошлое и будущее. При этом не учитывается, что календарь G. вступил в силу только в 1582 году или что некоторые регионы продолжают использовать другие календари с другими правилами високосного года. Если вам нужна поддержка других календарей, например, юлианского календаря, я рекомендую вам установить и использовать соответствующий модуль расширения Python.источник
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)
. То же самое как используется в askubuntu.com/a/1081237/790920