Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist
На главную -> MyLDP -> Тематический каталог -> Работа в консоли Linux

Peter Leung, "Командная строка: маленькие хитрости от Linux Commando"

Фокусы с датами

Оригинал: Fun with Date Arithmetic
Автор: Peter Leung
Дата: 14 ноября 2009
Свободный перевод: Алексей Дмитриев
Дата перевода: 21 июля 2010

Все знают команду date, которая сообщает нам текущее время и дату. Изредка ею пользуются, чтобы скорректировать системное время. Это бывает все реже, так как появился сервис ntp, автоматически синхронизирующий системное время с сервером точного времени по вашему выбору.

Сегодня в ходу многочисленные реализации команды date. В этой статье говорится только о команде date из пакета GNU coreutils.

По умолчанию команда сообщает текущую дату и время.

$ date
 Sat Nov 14 17:54:51 PST 2009

Команда позволяет вам также производить основные вычисления будущих или прошедших дат. Для этого нужно применить опцию -d, а в качестве параметра указать желаемый отрезок времени вперед или назад:

$ date -d -30days
 Thu Oct 15 18:54:56 PDT 2009

Сколько раз вы вычисляли, какой был день недели и число N дней назад? Только вчера мне необходимо было вспомнить дату 30 дневной давности, чтобы найти нужный лог.

Для вычисления будущей даты вместо минуса ставим плюс:

$ date -d +30days
 Thu Oct 15 18:54:56 PDT 2009

Кроме дней (days) единицами могут служить годы (years), месяцы (months), минуты (minutes) и секунды (seconds).

$ date -d +2months
 Thu Jan 14 18:48:43 PST 2010

Их можно также комбинировать:

$ date -d +2months17days
 Sun Jan 31 18:49:45 PST 2010

Все вычисления мы производили относительно настоящего момента. А как насчет отсчета десяти дней от завтрашнего дня? Легко:

$ date -d tomorrow+10days
 Wed Nov 25 18:52:03 PST 2009

Или назад от вчерашнего:

$ date -d yesterday-10days
 Tue Nov  3 18:53:07 PST 2009

В качестве точки отсчета можно указать любой день, например, 21 января 2010:

$ date -d '2010-01-21 + 2 weeks 3 days'
 Sun Feb  7 00:00:00 PST 2010

И, наконец, команда распознает дни недели (Понедельник, Вторник и так далее) и два ключевых слова: "last" (прошлый) и "next" (следующий). Вот пример:

$ date -d 'next tuesday + 1 day'
Wed Nov 18 00:00:00 PST 2009

Надеюсь, вы получили удовольствие от знакомства с этой разносторонней командой.



Средняя оценка 5 при 1 голосовавших

Комментарии