Вы здесь

Время

Программа date — форматирование и конвертация дат

date #Текущая дата
date -d '2010-12-11 12:00'  # дата, указанная в строке
date --date='2010-12-11 12:00' #альтернативный вариант опции -d

Примеры дат:

  • 'now', 'today', 'yesterday', 'tomorrow'
  • 'now + 3 days', 'now + 5 hours'
  • 'next Thu', 'last Sun'
  • '30 Nov 2020 16:21:42 MSK+2' +'@1606724904' – секунды с 1970-01-01 12:00

Можно подсмотреть различные форматы дат командой strings $(which date)

Форматы

date +%Y-%m-%d # год-месяц-день
date +%H:%M:%S # часы:минуты:секунды
date +%s # Секунды с 1970-01-01
date +%A # Название дня недели в текущей локали

Стандартные форматы

date -I # ISO-8601 YYY-mm-dd Длинная форма опции — --iso-8601
date -Ihours # ISO-8601 с указанием точности представления даты. Можно указывать date (по умолчанию), hours, minutes, seconds, ns
date -R # Оно же --rfc-email — формат принятый в заголовках электронной почты

Проблема начала недели

В Европе и в России первый день недели понедельник, в США — воскресенье, поэтому для дня недели используются два разных формата

%u – номер дня недели начиная с понедельника  (1..7). Воскресенье = 7.
%w – номер дня недели начиная с воскресенья (0..6). Воскресенье = 0.

При описании запуска заданий по расписанию в файле crontab для воскресенья можно использовать и 0 и 7.

Вычисления с датами с помощью date

date -date='now + 3 days'
date -date='now + 5 hours'

Вычисления в секундах во внешней программе

START=$(date --date='2020-01-01 0:00' +%s)
END=$((START+3600*24*45)) # + 45 дней
date --date="@$END"

Функции перевода времени в секунды и назад в mysql

select UNIX_TIMESTAMP(date) as stamp;
select FROM_UNIXTIME(stamp) as date;
Яндекс.Метрика