Получение вчерашней даты — частая задача в Linux-скриптинге и автоматизации. Это руководство представляет два надежных метода с использованием встроенной команды date
и рассматривает вопросы обработки часовых поясов.
Содержание
Использование команды date
Простейший подход включает прямое использование встроенной функции «вчера» команды date
:
date -d "yesterday" +%Y-%m-%d
Эта команда:
date
: Вызывает команду date.-d "yesterday"
: Указывает, что нам нужна вчерашняя дата.+%Y-%m-%d
: Форматирует вывод как YYYY-MM-DD. Вы можете настроить это (например,+%F
,+%Y/%m/%d
,+%d/%m/%Y
).
Пример: Если сегодня 2024-10-27, вывод будет: 2024-10-26
Обработка часовых поясов для большей точности
Для скриптов, требующих точных вычислений дат в разных часовых поясах, необходим более надежный метод. Хотя предыдущий метод обычно достаточен, несоответствия могут возникать из-за перехода на летнее время. Этот усовершенствованный подход использует эпохальное время:
date -d "@$(($(date +%s) - 86400))" +%Y-%m-%d
Эта команда:
date +%s
: Получает текущее время в секундах с начала эпохи (1 января 1970 года, 00:00:00 UTC).$(...)
: Подстановка команды, захватывающая вывод внутренней команды.- 86400
: Вычитает 86400 секунд (один день).@(...)
: Говоритdate
интерпретировать предшествующее значение как секунды с начала эпохи.date -d "..." +%Y-%m-%d
: Форматирует результирующее эпохальное время как YYYY-MM-DD.
Этот метод обеспечивает точность за счет прямого манипулирования эпохальным временем, избегая потенциальных неоднозначностей, связанных с часовыми поясами.
В большинстве сценариев первый метод с использованием date -d "yesterday"
достаточен. Однако для критически важных приложений или скриптов, работающих с несколькими часовыми поясами, второй подход обеспечивает более надежное решение. Не забудьте настроить формат вывода в соответствии с вашими конкретными требованиями.