Команда date – это внешняя программа bash, которая позволяет устанавливать или отображать системную дату и время. Она также предоставляет несколько вариантов форматирования. Команда date устанавливается по умолчанию во всех дистрибутивах Linux.
$ which date $ type -a date

Введите команду date в терминале, чтобы отобразить текущую дату и время.
$ date

Изменение даты и времени системы Linux
С помощью команды date можно изменить системную дату, время и часовой пояс, и изменения должны быть синхронизированы с аппаратными часами.
$ date --set="Thu Nov 12 13:06:59 IST 2020" $ hwclock --systohc

Варианты форматирования
A good place to get the list of formatting options will be the man page.
$ man date
Давайте рассмотрим некоторые из наиболее распространенных вариантов форматирования, которые мы будем использовать.
- Для применения форматирования используйте «+» с последующим «форматером».
- Для получения списка вариантов форматирования для GNU\LINUX ознакомьтесь с связанной страницей руководства.
- Для получения списка вариантов форматирования для BSD ознакомьтесь с связанной страницей руководства.
Два важных элемента команды date – это использование формата +%
и опции -date.
Теперь применим форматирование к команде date. Для применения форматирования добавьте знак плюса (+)
, за которым следует %форматтер
, как показано в примерах.
Обработка даты в Linux
Давайте посмотрим, как использовать связанные с датой форматы в простом оболочечном скрипте под названием «date.sh«.
# PRINT YEAR,MONTH,DAY AND DATE... echo "We are in the year = $(date +%Y)" echo "We are in the year = $(date +%y)" # Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year. echo "We are in the month = $(date +%m)" echo "We are in the month = $(date +%b)" echo "We are in the month = $(date +%B)" # Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name. echo "Current Day of the month = $(date +%d)" echo "Current Day of the week = $(date +%A)" echo "Current Day of the week = $(date +%a)" # Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name. # Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format. echo "Date using %D = $(date +%D)" echo "Date using %F = $(date +%F)"

Обработка времени в Linux
Давайте посмотрим, как использовать связанные с временем форматы в простом оболочечном скрипте под названием «time.sh«.
# PRINT HOURS, MINS, SECONDS, NANO SECONDS echo Hours = $(date +%H) echo Minutes = $(date +%M) echo Seconds = $(date +%S) echo Nanoseconds = $(date +%N) echo Epoch Time = $(date +%s) echo "current time = $(date +%H:%M:%S:%N)" # can also use %T which displays Time in HH:MM:SS format. echo "current time in 24 hour format = $(date +%T)" # can also use %r to display time in 12 hour format. echo "current time in 12 hour format = $(date +%r)"

С флагом –date или -d
С флагом --date
или -d
входные данные можно передавать в виде строки, и команда date умеет умно их обрабатывать.
Давайте рассмотрим несколько примеров, чтобы понять, как это работает.
# Print yesterday's date and time. echo "Yesterday = $(date -d "Yesterday")" # Print Tomorrow date and time. echo "tomorrow = $(date -d "tomorrow")" # Find what is the date and time before 10 days from now. echo "Before 10 days = $(date -d "tomorrow -10 days")" # Find last month and next month echo "Last month = $(date -d "last month" "%B")" echo "Next month = $(date -d "next month" "%B")" # Find last year and next year echo "Last Year = $(date -d "last year" "+%Y")" echo "Next Year = $(date -d "next year" "+%Y")" # Forecast the weekday echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")

Общие операции
рассчитать количество дней между 2 указанными датами.
$ echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))
Определить, является ли указанный год високосным или нет.
$ for y in {2000..2020}; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done

Присваивание вывода команды date переменной.
$ TODAY=$(date +%Y-%m-%d) OR $ TODAY1=$(date +%F) $ echo $TODAY $ echo $TODAY1

Создание файлов журналов с добавлением даты к имени файла.
Добавление даты и времени при создании файлов журналов, резервных копий или текстовых файлов – это обычная операция, с которой мы чаще всего сталкиваемся. Давайте рассмотрим пример, чтобы создать резервную копию, мы создали оболочечный скрипт.
Этот скрипт будет создавать резервную копию с 00:00 до 23:59 и запланирован для запуска ежедневно в 00:00 следующего дня. Мы хотим создать файлы журналов с форматом даты вчерашнего дня.
CUSTOM_FORMAT=$(date --date "Yesterday" "+%d-%y-%H:%M") LOG_FILE=/var/log/custom_application/application_${CUSTOM_FORMAT}.log echo "Script started" >> ${LOG_FILE} ... CODE BLOCKS ... echo "Script completed" >> ${LOG_FILE}
Вот и всё для этой статьи. В этой статье мы увидели, как использовать дату и время в bash в Linux. Дайте нам знать ваш отзыв.
Source:
https://www.tecmint.com/change-linux-system-date-and-time/