Ответы:
В реализации GNU date
для отображения вчерашней даты введите:
$ date --date="1 days ago"
ИЛИ
$ date --date="-1 day"
На ваш вопрос:
$ date --date="25 days ago"
ИЛИ
$ date --date="-25 day"
Для использования с переменными вы можете использовать $()
:
pastDate=$(date --date="-25 day")
echo "$pastDate"
Для общих случаев n
и на конкретную дату:
#!/bin/bash
date1="Tue Sep 2 07:53:47 EEST 2014"
echo "Before? "
read n
date --date="$date1 -$n day"
Далее указываются дата и количество дней.
Сценарий поворачивает даты в секундах и вычисляет, что такое момент времени 1 ( Tp1
), если количество дней (в секундах) вычитается из заданного момента времени 2 ( Tp2
). В конце секунды конвертируется обратно в дату.
Date_m=2014/09/15
Days=25
Seconds=$(echo "$Days"*60*60*24| bc -l)
Tp2date=$(date -d "$Date_m" +%Y/%m/%d)
Tp2sec=$(date -d "$TD" +%s)
Tp1sec=$(echo "$TDsec"-"$Seconds"| bc -l)
Tp1date=$(date -d @$Tp1sec)
echo "$Tp1date"
15/09/2014
не год, а первый.
Несколько запоздало, но вот один из способов обработки дат в формате дд / мм / гггг за пределами США с 25-дневной относительной корректировкой:
date_m='15/09/2014'
date --date "$(IFS=/ read d m y <<<"$date_m"; echo "$m/$d/$y - 25 days")" +%d/%m/%Y
21/08/2014
Предполагается, что оболочка, например bash
, способная обрабатывать перенаправление строк <<<
, и GNU date
.
date
не анализируется15/09/2014
как действительная дата, хотя.